我正在尝试使用 re.findall 方法在字符串中查找特定单词,到目前为止我已经成功实现了代码,但问题是我的代码区分大小写,而我正在尝试不区分大小写。我尝试过设置标志 re.IGNORECASE 等,但没有运气,请帮助我。这是我的代码:
from collections import Counter
vocab = ['Chrome', 'Mozilla', 'Opera', 'iPhone', 'Spider']
with open('Assignment_log.txt', 'r') as file:
data = file.read().replace('\n', '')
wordcount = dict((x,0) for x in vocab)
for w in re.findall(r"\w+", data, re.IGNORECASE):
if w in wordcount:
wordcount[w] += 1
wordcount = Counter(wordcount)
print(wordcount)
Output: Counter({'Mozilla': 339, 'Chrome': 35, 'Opera': 16, 'iPhone': 2, 'Spider': 0})
这里的“spider”区分大小写,因此,我的计数为零。
最佳答案
尝试将词汇列表和调用 re.findall
获得的每个匹配项都小写:
vocab = ['chrome', 'mozilla', 'opera', 'iphone', 'spider']
with open('Assignment_log.txt', 'r') as file:
data = file.read().replace('\n', '')
wordcount = dict((x,0) for x in vocab)
for w in re.findall(r"\w+", data):
if lower(w) in wordcount:
wordcount[w] += 1
wordcount = Counter(wordcount)
print(wordcount)
请注意,由于您只是在调用 re.findall
中搜索 \w+
,所以我真的不明白在那里使用小写标志的意义。在与词汇表进行比较之前,只需将找到的每个单词小写即可。
关于python - 如何使 re.findall 不区分大小写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66967037/