为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕桂英3389331 2021-10-26 13:28:15
你好,我需要弄清楚如何计算一个句子中的单词数,但现在我被卡住了。我当前代码的问题在于,它不会过滤掉元字符,因此像“...”这样的字符串会产生错误。   print(len(input().split()))我尝试使用的另一种方法是这个(即使用正则表达式过滤出元字符。但这只会导致 len 函数计算所有字符而不是单词:   import re    print(len(re.sub('[^a-zA-Z]+',' ',input())))
查看完整描述

2 回答

?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

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

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


查看完整回答
反对 回复 2021-10-26
?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

下面匹配字母字符组。我之前尝试过使用几种不同的表达方式,但是诸如“--”之类的符号组合会被计为单词。仅使用 \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))


查看完整回答
反对 回复 2021-10-26
  • 2 回答
  • 0 关注
  • 153 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信