2016-06-07 39 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 **行**進行迭代可能會避免讀取整個文件內容。相反,它逐行讀取文件。 對於非常大的文件,這可能很重要。 –

相關問題