如何在文本文件中搜索单词并用 Python 打印部分行?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/18366554/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-19 10:33:59  来源:igfitidea点击:

How to search for word in text file and print part of line with Python?

pythonpython-3.x

提问by hjames

I'm writing a Python script. I need to search a text file for a word and then print part of that line. My problem is that the word will not be an exact match in the text file.

我正在编写一个 Python 脚本。我需要在文本文件中搜索一个单词,然后打印该行的一部分。我的问题是这个词在文本文件中不会完全匹配。

For example, in the below text file example, I'm searching for the word "color=".

例如,在下面的文本文件示例中,我正在搜索单词"color=".

Text File ex:

文本文件例如:

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

If it finds it, it should print to a new text file "color=color", not the whole line.

如果找到它,它应该打印到一个新的文本文件"color=color",而不是整行。

Result Text File ex:

结果文本文件例如:

color=red
color=green
color=yellow

My code:

我的代码:

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)

I believe I need to use regular expressions or something like line.find("color="), but I'm not sure what or how.

我相信我需要使用正则表达式或类似的东西line.find("color="),但我不确定是什么或如何。

Question: How do I search a text file for a word (not an exact match) and the print only a specific part of each line?

问题:如何在文本文件中搜索一个词(不是完全匹配)并只打印每行的特定部分?

采纳答案by Brionius

Here's one way - split each line by spaces, then search each part for "color=":

这是一种方法 - 用空格分割每一行,然后在每个部分中搜索“color=”:

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

回答by kirbyfan64sos

Well, it may not be much, but you could always use regex:

好吧,它可能不多,但你总是可以使用正则表达式:

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