我有一个看起来像
的文件 12 MG -5.000000000000E-01 -5.000000000000E-01 0.000000000000E+00
16 S 1.558454815345E-01 1.558454815345E-01 2.500000000000E-01
8 O 2.189546044408E-01 -1.271822846411E-01 4.012978695812E-01
我想从行前面分出数字,输出为
MG -5.000000000000E-01 -5.000000000000E-01 0.000000000000E+00
S 1.558454815345E-01 1.558454815345E-01 2.500000000000E-01
O 2.189546044408E-01 -1.271822846411E-01 4.012978695812E-01
我有这个
for line in file:
head, sep, tail = line.partition('wildcard')
print tail
我应该为通配符添加什么内容?
答案 0 :(得分:6)
您的格式看起来像固定列格式,其中每列的宽度都是固定的。
如果是这样,请改为使用切片:
for line in file:
print line[4:]
切掉前4个字符。
或者,在空格上拆分一次,None
参数为str.split()
:
for line in file:
tail = line.split(None, 1)[-1]
print tail
str.split(None)
在字符串的开头跳过空格,并在第一列之后的第一个空格字符序列上拆分。 [-1]
采用最后一个元素;即使行上只有一列,你也会得到一个结果。
演示:
>>> line = ' 16 S 1.558454815345E-01 1.558454815345E-01 2.500000000000E-01\n'
>>> line.split(None, 1)
['16', 'S 1.558454815345E-01 1.558454815345E-01 2.500000000000E-01\n']
答案 1 :(得分:5)
你可以使用,
head, sep, tail = line.strip().partition(" ")
整个程序就像这样
with open("Input.txt") as inFile:
for line in inFile:
print line.strip().partition(" ")[2]
<强>输出强>
MG -5.000000000000E-01 -5.000000000000E-01 0.000000000000E+00
S 1.558454815345E-01 1.558454815345E-01 2.500000000000E-01
O 2.189546044408E-01 -1.271822846411E-01 4.012978695812E-01
答案 2 :(得分:2)
text = '''12 MG -5.000000000000E-01 -5.000000000000E-01 0.000000000000E+00
16 S 1.558454815345E-01 1.558454815345E-01 2.500000000000E-01
8 O 2.189546044408E-01 -1.271822846411E-01 4.012978695812E-01'''
for line in text.splitlines():
print line.split(None,1)[1]
结果
MG -5.000000000000E-01 -5.000000000000E-01 0.000000000000E+00
S 1.558454815345E-01 1.558454815345E-01 2.500000000000E-01
O 2.189546044408E-01 -1.271822846411E-01 4.012978695812E-01
答案 3 :(得分:0)
您也可以使用库来代替自己动手:NumPy的I / O例程(loadtxt
)对于解析此类文件非常有用。
在您的情况下,您必须指定记录数据类型(dtype
参数,请参阅numpy.loadtxt)。