用于抓取lin的特定部分的python正则表达式

2024-09-27 00:16:09 发布

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

想要浏览文件中的行并抓住其中的某些部分

线条如下图所示 “2584\tM108\tK:14%” “2585\tM108\tK:14%\tN:10%”

我已经写了下面的表达,但它们似乎让我失望。。。 首先,我希望抓取M10*和K,并将它们粘在一起,只取M10*之后的第一个条目(在上面的示例K中)

Mutation = re.sub(r'.*\t(.*)\t.*:(.*)%.*', r'\1\2', line)

我想要突变=M108K

其次,我想获取不带%符号的百分比

Percentage = re.sub(r'.*\t.*\t.*:(.*)%.*', r'\1', line)

我要百分比=14

如果你写的表达方式不太熟练,那么这些表达方式就不起作用,效率也很低。如果您能帮助修复/优化它们,我们将不胜感激


Tags: 文件re示例line符号条目tktn
1条回答
网友
1楼 · 发布于 2024-09-27 00:16:09

我会在一个正则表达式中完成所有这些.*是贪婪的,它尽可能多地吃掉所有字符。因此,您需要通过在*旁边添加?量词来进行非贪婪匹配

>>> import re
>>> s = "2584\tM108\tK:14%" "2585\tM108\tK:14%\tN:10%"
>>> re.sub(r'^.*?\t(.*?)\t(.*?):(.*?)%.*', r'\1\2 \3', s)
'M108K 14'

>>> mutation,percentage = re.sub(r'^.*?\t(.*?)\t(.*?):(.*?)%.*', r'\1\2 \3', s).split()
>>> mutation
'M108K'
>>> percentage
'14'

相关问题 更多 >

    热门问题