作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个这样的txt文件:
ASP62-Main-N LYS59-Main-O 100.00%
THR64-Side-OG1 VAL60-Main-O 100.00%
ALA66-Main-N LEU61-Main-O 100.00%
LYS33-Main-N SER30-Main-O 100.00%
我想获取“-Main”或“-Side”之前的数字,结果如下:
62 59
64 60
66 61
33 30
我写了一些代码,但结果只显示“-Main”后面的数字。
f1 = open(filename1)
for line in f1.readlines():
N=re.compile(r'(\d+)-Main|-Side')
n=N.findall(line)
print (n)
结果如下所示:
['62', '59']
['', '60']
['66', '61']
['33', '30']
请有人给我一些建议。
最佳答案
正如 @JosephSible 所提到的,您应该对交替中的模式进行分组,因为交替的优先级较低,但在这种情况下,您应该对 -Main
和 使用非捕获组-Side
因为您实际上并不希望它们出现在输出中:
N=re.compile(r'(\d+)(?:-Main|-Side)')
或者,您可以使用前瞻模式,这样您就不需要任何捕获组:
N=re.compile(r'\d+(?=-Main|-Side)')
关于python - 如何在python中提取txt文件中的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52694875/
我是一名优秀的程序员,十分优秀!