2013-08-21 146 views
2

我在寫一個Python腳本。我需要在文本文件中搜索一個單詞,然後打印該行的一部分。我的問題是這個詞在文本文件中不會完全匹配。如何在文本文件中搜索單詞並用Python打印部分行?

例如,在下面的文本文件示例中,我正在搜索單詞"color="

文本文件例如:

ip=10.1.1.1 color=red house=big 
ip=10.1.1.2 color=green house=small 
ip=10.1.1.3 animal = dog house=beach 
ip=10.1.1.4 color=yellow house=motorhome 

如果它發現它,它應該打印到一個新的文本文件"color=color",而不是整條生產線。

結果文本文件例如:

color=red 
color=green 
color=yellow 

我的代碼:

for line_1 in open(file_1): 
    with open(line_1+'.txt', 'a') as my_file: 
     for line_2 in open(file_2): 
      line_2_split = line_2.split(' ') 
      if "word" in line_2: 
       if "word 2" in line_2: 
        for part in line_2: 
         line_part = line_2.split(): #AttributeError: 'list' object has no attribute 'split' 
         if "color=" in line_part(): 
          print(line_part) 

我相信我需要使用正則表達式或類似line.find("color="),但我不知道怎麼去的。

問題:如何搜索的文本文件的字(不完全匹配),並且只打印每行的特定部分?

回答

4

這裏有一種方法 - 分裂空格每一行,然後搜索每一部分的「顏色=」:

with open("textfile.txt") as openfile: 
    for line in openfile: 
     for part in line.split(): 
      if "color=" in part: 
       print part 
+0

我收到錯誤:'AttributeError:'list'object has no attribute'split'',因爲我之前已經分割了這一行。我將編輯上面的代碼以顯示整個代碼。 – hjames

+0

變化很大。您打開的3個以上文件中的哪一個有上面提到的數據? – Brionius

+0

file_2有數據 – hjames

1

嗯,這可能並不多,但你總是可以使用正則表達式:

m = re.search(r'(color\=.+?(?=)|color\=.+?$)', line) 
if m: 
    text = m.group() # Matched text here 
相關問題