首页 > 解决方案 > python过滤元字符,同时保持单词的完整性

问题描述

您好,我需要弄清楚如何计算一个句子中的单词数,但现在我被卡住了。我当前代码的问题在于,它不会过滤掉元字符,因此像“...”这样的字符串会产生错误。

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

我尝试使用的另一种方法是这个(这是使用正则表达式来过滤元字符。但这只会导致 len 函数计算所有字符而不是单词:

   import re

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

标签: pythonregexstring

解决方案


您可以使用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

因此,这将删除每个不是字母数字且不是空格的字符。


推荐阅读