带正则表达式的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',句子)