只读取python中文本文件中的数字

时间:2017-11-07 15:24:50

标签: python

我有一个包含以下条目的文本文件:

 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的新手,无法想出一个能够解决这个问题的功能。任何建议将不胜感激

2 个答案:

答案 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)