1

我有一个看起来像的文件

 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

我应该为通配符输入什么?

4

4 回答 4

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']
于 2013-12-12T17:09:40.457 回答
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
于 2013-12-12T17:09:49.977 回答
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
于 2013-12-12T17:10:45.590 回答
0

除了自己动手,您还可以使用库:NumPy 的 I/O 例程 ( loadtxt) 对于解析此类文件非常有用。

在您的情况下,您必须指定记录数据类型(dtype参数,请参阅numpy.loadtxt)。

于 2013-12-12T17:17:49.783 回答