我正在尝试编写一个简单的脚本,用户可以在指定的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的文件,但输出与搜索变量中输入的单词无关。
任何建议表示赞赏。
答案 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)