python regex:如何从字符串中删除由[和]分隔的字段

时间:2013-04-25 10:53:47

标签: python regex string

我有一个文件,每一行都是这样的:

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 个答案:

答案 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]:所以如果您愿意,只需添加该空格

答案 1 :(得分: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的解决方案将更加可靠。