我不确定为什么这不起作用:
import re
import csv
def check(q, s):
match = re.search(r'%s' % q, s, re.IGNORECASE)
if match:
return True
else:
return False
tstr = []
# test strings
tstr.append('testthisisnotworking')
tstr.append('This is a TEsT')
tstr.append('This is a TEST mon!')
f = open('testwords.txt', 'rU')
reader = csv.reader(f)
for type, term, exp in reader:
for i in range(2):
if check(exp, tstr[i]):
print exp + " hit on " + tstr[i]
else:
print exp + " did NOT hit on " + tstr[i]
f.close()
testwords.txt 包含这一行:
blah, blah, test
所以本质上“测试”是 RegEx 模式。没有什么复杂的,就一个简单的词。这是输出:
test did NOT hit on testthisisnotworking
test hit on This is a TEsT
test hit on This is a TEST mon!
为什么它没有击中第一根弦?我也试过 \s*test\s* 但没有成功。帮忙?
请您参考如下方法:
csv 模块默认返回输入中单词周围的空格(这可以通过使用不同的“方言”来更改)。所以 exp 包含带有前导空格的 "test"。
解决这个问题的一个快速方法是添加:
exp = exp.strip()
在您读取 CSV 文件之后。
