用python从文本文件中提取信息

用python从文本文件中提取信息,python,python-3.4,Python,Python 3.4,我有一个项目,其中包括编写一个程序,从一个文本文件中提取某些数据(数字),该程序必须通用化,以使用相同格式的不同文本文件 该文件是对一个分子的分析,要提取的数据是分子内每个原子的坐标,因此它必须以一种方式进行概括,即它提取的数据与不同文件中的原子数量相同 以下是我到目前为止的想法: def Prog1(): f=open( "C:/dimer.out","r" ) m=open("C:/dimer1.out","w") g=f.readlines() for k in range(len(g))

我有一个项目,其中包括编写一个程序,从一个文本文件中提取某些数据(数字),该程序必须通用化,以使用相同格式的不同文本文件

该文件是对一个分子的分析,要提取的数据是分子内每个原子的坐标,因此它必须以一种方式进行概括,即它提取的数据与不同文件中的原子数量相同

以下是我到目前为止的想法:

def Prog1():
f=open( "C:/dimer.out","r" )
m=open("C:/dimer1.out","w")
g=f.readlines()
for k in range(len(g)):
    if "Standard" in g[k]:
        c=k
for n in range(c+5, len(g)):
    m.write(g[n])
    if "------------" in g[n+1]:
        break
这基本上是根据文件格式以通用方式提取包含信息的行并将其写入新的文本文件中。(带有信息的行总是在包含“Standard”的行之后的5行开始,并且后面总是跟有大量“----”的行。 然后,

这是为了提取这些行中的确切数据,并将它们放在各自的列表中。(数据和要extact的数据之间有空格,是带有多个字符的数字。但是我在m=next(数据)上得到了一个错误'Stopiteration'。错误是什么?或者我如何修改它才能工作


提前感谢:)

问题在于这两行代码在一起:

m = open('C:/dimer1.out', 'r')

for line in m:
    n += 1

...

data = csv.reader(m, delimiter=' ')
for i in range(k):
    M = next(data)
一旦您对m中的行执行了
,您就用完了文件对象。文件头现在位于文件的末尾,因此当您作为
csv.reader
再次阅读它时,您不会想到任何东西


for line in m
循环和
for i in range(k)
循环之间的任何点上,执行
m.seek(0)
。这将使文件头回到文件的开头,并允许您再次读取。

停止迭代
,因为没有更多数据
m = open('C:/dimer1.out', 'r')

for line in m:
    n += 1

...

data = csv.reader(m, delimiter=' ')
for i in range(k):
    M = next(data)