-1

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

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

我需要BLA[16878:950f],.

请注意,文本BLA始终相同,但[and]中的文本始终不同,并且可以具有不同的长度。

最后我需要的是:

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

有任何想法吗?我非常不擅长正则表达式,但我认为这是唯一的方法。

谢谢

4

2 回答 2

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

于 2013-04-25T10:55:39.917 回答
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 的解决方案会更可靠。

于 2013-04-25T11:08:33.280 回答