当使用文件作为输入时,Python中的re.search产生“无”

时间:2016-05-04 21:52:10

标签: python

我非常擅长堆栈溢出和编程,并感谢您提供的任何帮助!

我想在Python中使用re.search函数来查找文件中的文本(这只是练习,因为最终我想使用re.sub和正则表达式来查找/替换)。但我无法让它发挥作用!

例如,如果我在Python中输入以下代码:

import re
SearchStr = 'world'
Result = re.search(SearchStr,"Hello world")
print Result

我得到以下输出:<_sre.SRE_Match object at 0x106875e00> 太好了!

但后来我创建了一个名为“python_test.txt”的文件,其中包含文本“Hello world”,我运行了以下脚本:

import re
InFileName = 'python_test.txt'
InFile = open(InFileName, 'r')
SearchStr = 'world'
Result = re.search(SearchStr,InFile)
print Result

我得到以下输出:None

如果我用InFile.read()替换最后三行,我得到'Hello world.\n'作为输出,所以我认为我的脚本正在读取文件。我还尝试在InFile.read()条款中使用InFile代替re.search;这也没用。为什么我的脚本在我的文件中找不到“世界”?

1 个答案:

答案 0 :(得分:2)

re.search期望string为第二个参数。不是文件。尝试使用:

Result = re.search(SearchStr,InFile.read())