如何从文件中读取负数?
我有一个文件,里面包含这样的字符串:
N7300 X-7.254 Y-40.839 A-89.74
N7301 X-7.002 Y-40.847 A-89.806
N7302 X-6.75 Y-40.855 A-89.873
N7303 X-6.511 Y-40.862 A-89.926
N7304 X-6.272 Y-40.868 A-89.979
这些加粗的字符串里有负数。我不知道怎么从文件中读取这些数字。
我想生成这样的输出:
[('N','7300'),('X','-7.254'), ('Y','-40.839') . . .]
import re
import sys
with open(r'/home/ruchir/Desktop/NewFolder/TEST.txt') as f:
lines=f.readlines()
lines=''.join(lines)
lines=lines.split()
a=[]
for i in lines:
match=re.match(r"([a-z]+)([0-9]*\.?[0-9]+)",i,re.I)
if match:
a.append(match.groups())
print a
我写了一个程序,运行得很好,但对负整数不行..!! 请帮帮我,我是Python新手...
2 个回答
1
我会按照这样的思路来做:
contents='''\
N7300 X-7.254 Y-40.839 A-89.74
N7301 X-7.002 Y-40.847 A-89.806
N7302 X-6.75 Y-40.855 A-89.873
N7303 X-6.511 Y-40.862 A-89.926
N7304 X-6.272 Y-40.868 A-89.979'''
import re
pat=re.compile(r'(?:(\w)([-+]?[0-9]*\.?[0-9]+))')
for line in contents.splitlines():
ld=[ m.groups() for m in pat.finditer(line)]
print ld
输出结果是:
[('N', '7300'), ('X', '-7.254'), ('Y', '-40.839'), ('A', '-89.74')]
[('N', '7301'), ('X', '-7.002'), ('Y', '-40.847'), ('A', '-89.806')]
[('N', '7302'), ('X', '-6.75'), ('Y', '-40.855'), ('A', '-89.873')]
[('N', '7303'), ('X', '-6.511'), ('Y', '-40.862'), ('A', '-89.926')]
[('N', '7304'), ('X', '-6.272'), ('Y', '-40.868'), ('A', '-89.979')]
2
试试这样的写法:
result=re.findall(r"([a-z]+)(-?[0-9]*\.?[0-9]+)","N7303 X-6.511 Y-40.862 A-89.926",re.I)
print result
这样会得到:
[('N', '7303'), ('X', '-6.511'), ('Y', '-40.862'), ('A', '-89.926')]
注意那个 -?
的部分。它让你可以在数字前面加一个可选的连字符。