我有一个文本文件,其中包含以下格式的信息。
2018/03/21-17:08:48.638553 508 7FF4A8F3D704 snononsonfvnosnovoosr
2018/03/21-17:08:48.985053 346K 7FE9D2D51706 ahelooa afoaona woom
2018/03/21-17:08:50.486601 1.5M 7FE9D3D41706 qojfcmqcacaeia
2018/03/21-17:08:50.980519 16K 7FE9BD1AF707 user: number is 93823004
2018/03/21-17:08:50.981908 1389 7FE9BDC2B707 user 7fb31ecfa700
2018/03/21-17:08:51.066967 0 7FE9BDC91700 Exit Status = 0x0
2018/03/21-17:08:51.066968 1 7FE9BDC91700 std:ZMD:
预期结果
我想删除字符串的一部分直到第3个空格(即7FF4A8F3D704)。结果应该像
snononsonfvnosnovoosr
ahelooa afoaona woom
qojfcmqcacaeia
user: number is 93823004
user 7fb31ecfa700
Exit Status = 0x0
std:ZMD:
解决方案
我可以使用以下代码删除“ 2018/03 / 21-17:08:48.638553”。但是我试图用''代替整个部分。
import re
Regex_list = [r'\d{4}/\d{2}/\d{2}-\d{2}:\d{2}:\d{2}.\d{6}']
for p in Regex_list:
text = re.sub(p, ' ', file)
答案 0 :(得分:1)
如果这是文本文件的确切结构,那么为什么不简单地切掉前n个无趣的字符呢?
for line in txt.splitlines():
print(line[53:])
#snononsonfvnosnovoosr
#ahelooa afoaona woom
#qojfcmqcacaeia
#user: number is 93823004
#user 7fb31ecfa700
#Exit Status = 0x0
#std:ZMD:
答案 1 :(得分:0)
因为看起来前三个列值中将永远没有空格,所以匹配\S+\s+
以获得列值及其右侧的相关空格填充,并重复3次: / p>
output = re.sub(r'(?m)^(?:\S+\s+){3}', '', input)
答案 2 :(得分:0)
另一种使用re.split()
(并将拆分限制为3个拆分)的方法。
假定前三个字段中没有空格。
它在1个或多个空格上分割。
for data in L.splitlines():
print(re.split(r'\s+', data, 3)[-1])
输出:
snononsonfvnosnovoosr
ahelooa afoaona woom
qojfcmqcacaeia
user: number is 93823004
user 7fb31ecfa700
Exit Status = 0x0
std:ZMD: