Python - 使用raw_input()搜索文本文档

时间:2016-06-30 18:12:20

标签: python-2.7

我正在尝试编写一个简单的脚本,用户可以在指定的txt文件中输入他/她想要搜索的内容。如果找到他们搜索的单词,则将其打印到新的文本文件。这是我到目前为止所得到的。

import re
import os

os.chdir("C:\Python 2016 Training")
patterns = open("rtr.txt", "r")

what_directory_am_i_in = os.getcwd() 

print what_directory_am_i_in

search = raw_input("What you looking for? ")

for line in patterns:
    re.findall("(.*)search(.*)",  line)
    fo = open("test", "wb")             
    fo.write(line)
    fo.close

这成功创建了一个名为test的文件,但输出与搜索变量中输入的单词无关。

任何建议表示赞赏。

2 个答案:

答案 0 :(得分:1)

首先,您还没有读过文件

patterns = open("rtr.txt", "r")

这是一个文件对象而不是文件内容,用于读取您需要使用的文件内容

patterns.readlines()

其次,re.findall返回匹配字符串列表,因此您希望存储该字符串。正如哈尼所指出的那样你的正则表达式也不正确,应该是

matched = re.findall("(.*)" + search + "(.*)",  line)

而应该是:

如果你想要完整的行

matched = re.findall(".*" + search + ".*",  line)

或只是

matched = line if search in line else None

第三,您不需要在for循环中继续打开输出文件。您每次都在循环中覆盖文件,因此它只捕获最后的结果。还记得在文件上调用close方法。 希望这有帮助

答案 1 :(得分:0)

您在这里搜索所有包含“搜索”字词的行

您需要获取包含您在shell中输入的文本的行

所以改变这一行

re.findall("(.*)search(.*)",  line)

re.findall("(.*)"+search+"(.*)",  line)