带正则表达式的Python For循环
空白问题 检查带正则表达式的Python For循环,python,regex,for-loop,Python,Regex,For Loop,空白问题 检查re.findall是否返回了所需的值的测试存在错误。您的支票: if test != None: 将始终为true,并且您将始终向wkar附加任何值word。从re文档(假设python3,但行为不变): 关于findall(模式、字符串、标志=0) 返回字符串中模式的所有非重叠匹配项,作为字符串列表结果中包含空匹配项 (强调矿山) 空列表不是None,即wkar包含句子中的所有值。 (有趣的是,这与你在问题开头提到的行为完全相反。) 解决方案 不要使用正则表达式,它是用于此工
re.findall
是否返回了所需的值的测试存在错误。您的支票:
if test != None:
将始终为true,并且您将始终向wkar
附加任何值word
。从re文档(假设python3,但行为不变):
关于findall(模式、字符串、标志=0)
返回字符串中模式的所有非重叠匹配项,作为字符串列表结果中包含空匹配项
(强调矿山)
空列表不是None
,即wkar
包含句子中的所有值。
(有趣的是,这与你在问题开头提到的行为完全相反。)
解决方案
不要使用正则表达式,它是用于此工作的错误工具。这可以通过使用内置函数来解决。此外,您还因为可以在if语句中完成的某些操作而受到性能影响
#使用内置拆分函数在空格上拆分句子
句子=句子。拆分(“”)
wkar=[]
#重复每个单词。。。
对于句子中的单词:
#…并查看它是否与测试单词匹配
如果word=='text':
wkar.append(word)
函数在整个句子中循环。你不必自己做那部分。要获得所需的输出,只需执行以下操作:
import re
sentence = 'This is some Text, then some more text with some Numbers 1357, and even more text 357, the end.'
wkar = re.findall(r'text', sentence)
这将导致:
['text', 'text']
如果希望re.findall()
不区分大小写,请使用:
wkar = re.findall(r'text', sentence, flags=re.IGNORECASE)
这将使:
['Text', 'text', 'text']
同样在将来,如果您想测试正则表达式,我建议您使用伟大的网站(确保为python正则表达式字符串格式选择python按钮) 为什么你不能:
re.findall('text',句子)
?