Skip to main content
 首页 » 编程设计

Python 正则表达式问题

2025年05月04日20cloudgamer

我不确定为什么这不起作用:

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 文件之后。