【发布时间】:2017-02-07 14:25:10
【问题描述】:
我在让 re.search 使用 txt 文件时遇到了一些麻烦。在我的 .txt 文件中,我有一小段代码会将一个字符串写入名为“Python 2.7 - 通过 PyCharm 编写”的文件,该文件可以正常工作。然后我想使用正则表达式来验证文件中是否存在“Written”一词。
这是我的代码:
FileOpen = open("default.txt", "r")
FileRead = FileOpen.read()
return_value = re.search(r"\bWritten\b", FileRead)
print return_value
在 return_value 打印之后,它没有找到所需的单词并在执行时输出搜索失败:
None
如果我在分配给变量的简单字符串上尝试相同的代码,则使用 re.search i:e: 成功找到匹配项:
string1 = "The fox jumped over the fence"
re.search(r"\bjumped over\b", string1)
执行时会产生这个输出::
sre.SRE_Match object...
但是,一旦我通过读取 .txt 文件中的内容开始尝试此 re.search(),它似乎总是以“无”失败。如果有人能告诉我哪里出错了,那将不胜感激。谢谢。
【问题讨论】:
-
print repr(FileRead)显示什么? (另外,按照惯例,以大写字母开头的名称是类。变量使用snake_case。) -
您好,感谢您的提示,我还制作了一个新模块并尝试了相同的代码并且它有效。问题是,在这段代码的正上方,我直接在上面调用了另一个 file.read。一旦删除它,然后使用我的问题中显示的代码找到匹配项。我猜它试图打开并读取已经打开以供读取的文件,从而导致问题。如果我的理论是正确的,为什么这会导致正则表达式失败,那么如果同意,我可以将其添加到答案中。
-
仔细检查正在搜索的字符串内容的一种方法是查看:
return_value.string
标签: python regex python-2.7