我在使用txt文件进行re.search时遇到了一些麻烦。在我的.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(),那么它似乎总是以“无”失败。如果有人能告诉我哪里出错了,那将非常感激。谢谢。
答案 0 :(得分:0)
您不需要正则表达式来执行此操作。你可以做得更轻松。
例如:
>>> f = open("test.txt", "r")
>>> fr = f.read()
>>> if "lorem" in fr:
... print "true"
真
希望它有所帮助。
编辑:
时间测试员:
如果str在str:
t = Timer("""if 'lorem' in open('test.txt', 'r').read(): print 'true'""")
print t.timeit()
19.9183969498
正则表达式搜索:
t = Timer("""import re
print re.search(r'lorem', open('test.txt', 'r').read())
""")
print t.timeit()
31.3400061131
注意:timeit()函数重复100万次。
结论:“如果str in str”要快得多。