我有一个包含以下条目的文本文件:
Y-6.352 Z281.116 A3=-1.0 B3=0.0 C3=0.0
我只想要每个变量的数字如下:
-6.352 281.116 -1.0 0.0 0.0
有关如何处理此问题的任何建议?我是python的新手,无法想出一个能够解决这个问题的功能。任何建议将不胜感激
答案 0 :(得分:1)
因此,如果您的文本文件包含:
Y-6.352 Z281.116 A3=-1.0 B3=0.0 C3=0.0
Y-6.352 Z281.116 A3=-1.0 B3=0.0 C3=0.0 Y2.249 Z283.923 A3=-1.0 B3=0.0 C3=0.0
您可以使用以下非正则表达式方法:
def get_value(v):
try:
return float(v.split('=')[1])
except IndexError as e:
return float(v[1:])
with open('input.txt') as f_input:
for raw_row in f_input:
values = map(get_value, raw_row.split())
print values
给你:
[-6.352, 281.116, -1.0, 0.0, 0.0]
[-6.352, 281.116, -1.0, 0.0, 0.0, 2.249, 283.923, -1.0, 0.0, 0.0]
答案 1 :(得分:0)
说s
是你文件的一行,你可以使用lookbehind断言。 ?<=
检查变量!
>>> import re
>>> s
'Y-6.352 Z281.116 A3=-1.0 B3=0.0 C3=0.0'
>>> re.findall("(?<=[AZaz])?(?!\d*=)[0-9.+-]+",s)
['-6.352', '281.116', '-1.0', '0.0', '0.0']
如果你想对文件做同样的事,
import re
with open('input file.txt','r') as file:
for line in file:
print re.findall("(?<=[AZaz])?(?!\d*=)[0-9.+-]+",line)