首页 > 解决方案 > 使用 RegEx 拆分字符串

问题描述

一天中的好时光,

目前我有点陷入挑战。我必须在一个短语中计算字数,我必须用空格或存在的任何特殊情况来分割它。

import re

def word_count(string):
    counts = dict()
    regex = re.split(r" +|[\s+,._:+!&@$%^]",string)
    for word in regex:
        word = str(word) if word.isdigit() else word
        if word not in counts:
            counts[word] = 1
        else:
            counts[word] += 1
    return counts

但是我被困在正则表达式部分。拆分时,也考虑了空白

我开始使用

for word in string.split():

但它没有通过以下短语的测试:

汽车:地毯作为java:javascript!!&@$%^&

嘿,我的空格键坏了。

' досвидания!'

因此,如果我理解的话,RegEx 是必要的。

非常感谢您!

标签: pythonregexsplit

解决方案


感谢 Olvin Roght 的建议。您的功能可以优雅地简化为此。

import re
from collections import Counter

def word_count(text):
    count=Counter(re.split(r"[\W_]+",text))
    del count[''] 
    return count

请参阅 Ryszard Czech 对等值的一班轮的回答。


推荐阅读