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

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

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

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

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


慕桂英3389331
浏览 154回答 2
2回答

蝴蝶不菲

您可以使用split根据分隔符进行拆分(在您的情况下,空格字符的默认分隔符就足够了),然后计算列表的长度:In [49]: my_str = 'A very valid, and nice example.'In [50]: len(my_str.split())Out[50]: 6编辑:由于您的示例中有标点符号,您可以先删除它们:In [59]: my_strOut[59]: 'A very valid, and nice example.'In [60]: len(re.sub('[^\w\s]', '', my_str).split())Out[60]: 6In [61]: len(re.sub('[^\w\s]', '', '...').split())Out[61]: 0因此,这将删除不是字母数字和空格的每个字符。

泛舟湖上清波郎朗

下面匹配字母字符组。我之前尝试过使用几种不同的表达方式,但是诸如“--”之类的符号组合会被计为单词。仅使用 \w 量词,这会计算所有单词组并将它们添加到列表中。如果您希望看到这些词,请删除 len 量词。我用我能想到的尽可能多的例子尝试了这个,它对所有的例子都有效!import redef getWordCount(value):    list = re.findall('([\w]+)',value)    return len(list)value = 'A very nice, and simple, example.'print(getWordCount(value))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python