2016-06-07 109 views
-4

我有一个带有EPA信息的文本文件,它们是按状态编码的。我想把每个状态分解成它自己的文本文件。这里是我正在使用的代码:解析一个文本文件并寻找一个特定的字符串

from __future__ import print_function 
import os, sys 
import numpy as np 


print(os.getcwd()) 

lines = [] #lines from file 
with open('UCMR3_All.txt') as well_list: 
    for line in well_list: 
     if line == "AL": 
      #what goes here? 

well_list_output = open(os.path.join('..','well_list_output.txt'),'w') 

for line in lines: 
    well_list_output.write(line) 

well_list_output.close() 

基本上,我想要一个包含“AL”的行并将其输出到它自己的文件。我试图使用lines.append(line),但似乎没有帮助。我肯定会接受有用的推动或指导来代替答案!

+2

当然这个问题的网站超过10倍。 – AK47

+0

用于file1中的行:if'AL'in line:file2.write(line)?? – AK47

+2

您可以在一个'with'语句中打开两个文件以从其中读取并写入另一个文件 –

回答

0
with open('UCMR3_All.txt') as well_list: 
    for line in well_list.read().split('\n': 
     if "AL" in line: 
      lines.append(line) 

稍后,您可以将lines var写入文件中。

基本上,well_list是一个文件对象。这不是一个字符串,当然也不是一个列表。如果要将文件内容读入字符串,只需使用read()方法。

读取文件后,可以使用split('\n')将它分割成行。

现在剩下的一切都是遍历该列表并将好行保存到列表中。这甚至可以在2行来:

with open('UCRM3_All.txt', 'r') as fileObj: 
    lines[:] = [line for line in fileObj.read().split('\n') if "AL" in line] 

这就是所谓的名单理解。您可以在线阅读更多内容。
现在对于印刷线列表文件(不同的文件),您可以:

for i in xrange(len(lines)): 
    with open("f" + str(i) = ".txt", "w") as fileObj: 
     fileObj.write(lines[i]) 
+0

在** well_list ** _ 中对_for **行**进行迭代可能会避免读取整个文件内容。相反,它逐行读取文件。 对于非常大的文件,这可能很重要。 –

相关问题