python过滤元字符,同时保持单词的完整性

2024-04-19 10:08:35 发布

您现在位置:Python中文网/ 问答频道 /正文

你好,我想知道如何计算一个句子的字数,但现在我卡住了。我当前代码的问题是,它不会过滤掉元字符,所以像“…”这样的字符串会产生错误

   print(len(input().split()))

我尝试使用的另一种方法是(使用regex来过滤元字符)。但这只会导致len函数计算所有不存在单词的字符:

   import re

   print(len(re.sub('[^a-zA-Z]+',' ',input())))

Tags: 方法函数字符串代码reinputlen错误
2条回答

下面的匹配字母字符组。我以前尝试过使用几个不同的表达式,但是像“”这样的符号组合会被算作单词。仅使用\w量词,对所有词组进行计数并将它们添加到列表中。如果你想看到这些单词,去掉len量词。我尝试了很多我能想到的例子,它对所有人都有效

import re

def getWordCount(value):
    list = re.findall('([\w]+)',value)
    return len(list)

value = 'A very nice, and simple, example.'
print(getWordCount(value))

您可以使用split根据分隔符进行拆分(在您的情况下,空格字符的默认分隔符就足够了),然后计算列表的长度:

In [49]: my_str = 'A very valid, and nice example.'

In [50]: len(my_str.split())
Out[50]: 6

编辑:由于示例中有标点符号,因此可以先删除它们:

In [59]: my_str
Out[59]: 'A very valid, and nice example.'

In [60]: len(re.sub('[^\w\s]', '', my_str).split())
Out[60]: 6

In [61]: len(re.sub('[^\w\s]', '', '...').split())
Out[61]: 0

所以这将删除所有不是字母数字和空格的字符

相关问题 更多 >