python - 如何使 re.findall 不区分大小写?

标签 python regex

我正在尝试使用 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/

相关文章:

python - 如何更改 matplotlib 中阴影线的线宽?

mysql - 正则表达式在 Mysql 中使用分隔符进行搜索

regex - 在 bash 中使用正则表达式复制和重命名多个文件

php - 获取非数字字符,然后在文本 block 的每一行上编号

python - 除非字符串在python中用引号引起来,否则如何将字符串拆分为字符串?

Python:解析关键字之间的文本

Python:用类变量替换全局变量是不是 'proper'

python - 如何找到特定单词在哪一行。 [Python]

python - Numpy vectorize() 正在展平整个数组

python - 正则表达式以匹配 YAML 中的键