2013-04-25 48 views
-1

刪除由[和]界定的領域我有一個文件,每行看起來是這樣的:蟒蛇REG EXP:如何從一個字符串

2013-04-23 16:04:12.276 BLA[16878:950f] 'asdf' : 0, 'asds': 0, 'adf': 0 

我需要一個,更換部分BLA[16878:950f]

請注意,文本BLA始終相同,但[]中的文本總是不同,並且可以具有不同的長度。

我需要到底是什麼:

2013-04-23 16:04:12.276, 'asdf' : 0, 'asds': 0, 'adf': 0 

任何想法?我在正則表達式上很糟糕,但我認爲這是唯一的方法。

感謝

回答

2
>>> import re 
>>> line = "2013-04-23 16:04:12.276 BLA[16878:950f] 'asdf' : 0, 'asds': 0, 'adf': 0" 
>>> re.sub(r'BLA\[[^\]]+\]', ',', line) 
"2013-04-23 16:04:12.276 , 'asdf' : 0, 'asds': 0, 'adf': 0" 

我覺得你真的想雖然更換spaceBLA[16878:950f]:所以只添加,如果你想

+0

哇,謝謝。這正是我所需要的。爲什麼reg exp總是需要如此複雜? :-) – otmezger 2013-04-25 10:57:58

+0

@otmezger'[',']'是元字符,所以有一些奇怪的轉義 – jamylak 2013-04-25 11:00:08

+0

這正是我自己無法找到的原因。但是這是'XCode'如何將'NSLog'的結果打印到控制檯中。 – otmezger 2013-04-25 11:02:19

1

這個空間我在正則表達式很糟糕,但我認爲這是唯一的方法。

FWIW,它可以在不正規表達式來完成...

>>> s = "2013-04-23 16:04:12.276 BLA[16878:950f] 'asdf' : 0, 'asds': 0, 'adf': 0" 
>>> i1 = s.find('[') 
>>> i2 = s.find(']') 
>>> '%s,%s' % (s[:i1-4], s[i2+1:]) 
"2013-04-23 16:04:12.276, 'asdf' : 0, 'asds': 0, 'adf': 0" 

...但是這一點,如果你能保證有每個[]人物只有一個出現只會工作在字符串中。

但是,jamylak的解決方案將更可靠。

+0

謝謝,我將在未來使用它來完成更簡單的任務。 – otmezger 2013-04-25 12:58:40