我有一个文件,每一行都是这样的:
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
有什么想法吗?我对正则表达式非常苛刻,但我认为这是唯一的方法。
由于
答案 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的解决方案将更加可靠。