Python从多个文件中提取第一个匹配实例
我已经编写了一个代码,它在一个目录中打开多个文件,并且只打印每个文件中所需文本匹配的第一个实例作为输出 现在我希望这个输出在一个文件中。只需将Python从多个文件中提取第一个匹配实例,python,text,for-loop,fileoutputstream,Python,Text,For Loop,Fileoutputstream,我已经编写了一个代码,它在一个目录中打开多个文件,并且只打印每个文件中所需文本匹配的第一个实例作为输出 现在我希望这个输出在一个文件中。只需将print>>file.txt、或写入或csv即可。写入在循环中不会起作用 我的代码是: import re, os, csv, sys path = "D:\\" in_files = os.listdir(path) moldesc = ['Match1', 'Match2'] for f in in_files: file = os.pa
print>>file.txt、
或写入或csv即可。写入在循环中不会起作用
我的代码是:
import re, os, csv, sys
path = "D:\\"
in_files = os.listdir(path)
moldesc = ['Match1', 'Match2']
for f in in_files:
file = os.path.join(path, f)
text = open(file, "r")
for line in text:
if moldesc[0] in line:
Text1 = line.split()[-1]
if moldesc[1] in line:
Text2 = line.split()[-1]
print f, Text1, Text2 # I WANT THIS OUTPUT IN A FILE
break
text.close()
print "We are extraction done !!!"
您成功地打开了一个文件进行读取,这离打开一个文件进行写入只有一步之遥
out = open(outfile, "w")
for f in in_files:
...
output_string = "{},{},{}\n".format(f, HOMO, LUMO)
out.write(output_string)
当您编写print>>输出时,“某些文本”
,output
应该是一个打开的文件(或其他类似文件的对象),而不是一个文件名。如果第
行中的moldesc[1]为true,而第
行中的moldesc[0]为true,您将得到一个namererror
。。。(至少第一次-否则,可能是Text1是从一行设置的,而该行与Text2设置的行完全无关…[例如,微妙的错误结果])。此外,你得到什么匹配似乎并不重要,你总是从这行中取最后一个字?如果有的话,你也可以选择(m in line代表m in)['Match1','Match2']:…
@DzinX Yes agreed print>>输出,应具有名为“output”的打开文件在w模式下,但仍然是Current脚本,它只从目录中的第一个文件中写入匹配的输出,而我希望从目录中的所有文件中获得第一个匹配实例…@Jon Clements Ya我正在匹配不同的单词,并从行中获取最后一个单词,并尝试打印这些单词…所以程序工作正常。但我希望是在一个文件中输出的。这是我无法做到的。还记得我使用了多个文件作为输入。所以-Text1总是在Text2之前,第36行(Text1)和第3900行(Text2)的最后一个字的输出[只是组成它们]是预期的输出?output_string=“{},{},{}\n”。format(f,HOMO,LUMO)AttributeError:'str'对象没有属性'format'wow,你在使用python 2.5吗?你可以使用output_string=“%s,%s”%(f,text1,text2)应该是,确保你关闭文件,如果你仍然有问题,发布带有问题的代码。这太棒了,对我来说就像魔术一样简单地关闭文件就行了…非常感谢