2013-08-21 99 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 
相关问题