在python中使用Regex删除部分字符串

2024-05-02 04:27:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有文本文件,其中包含以下格式的信息。你知道吗

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)

Tags: renumberisstatusexitlistregexstd
3条回答

另一种使用re.split()(并将拆分限制为3个拆分)的方法。 这假设前三个字段中没有空格。你知道吗

它在一个或多个空格上拆分。你知道吗

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:

如果这就是你的文本文件的结构,你为什么不简单地删掉前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:                

因为前3个列值中似乎没有空格,所以匹配\S+\s+以获得列值及其右侧关联的空格填充,并重复3次:

output = re.sub(r'(?m)^(?:\S+\s+){3}', '', input)

https://regex101.com/r/YHXTJs/1

相关问题 更多 >