python - python过滤元字符,同时保持单词的完整性
问题描述
您好,我需要弄清楚如何计算一个句子中的单词数,但现在我被卡住了。我当前代码的问题在于,它不会过滤掉元字符,因此像“...”这样的字符串会产生错误。
print(len(input().split()))
我尝试使用的另一种方法是这个(这是使用正则表达式来过滤元字符。但这只会导致 len 函数计算所有字符而不是单词:
import re
print(len(re.sub('[^a-zA-Z]+',' ',input())))
解决方案
您可以使用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
因此,这将删除每个不是字母数字且不是空格的字符。
推荐阅读
- php - 登录奏鸣曲系统用户
- oracle - Maven soa 使用 soa 插件进行测试
- asp.net - 如何在 Web 应用程序中创建新的 ASP.NET Web 表单的超链接
- python - python - 如何使用正则表达式来分隔输入
- android - android不能添加一个信号
- php - PHP 7 - error_log 中没有记录异常。error_log 根本没有得到处理
- spring - 使用 RabbitMQ 的 Spring Cloud Stream 消费者的多个 bindingRoutingKey
- c - 在两个哈希表之间移动项目
- javascript - jQuery find vs id 属性
- java - 爪哇。常用表达。如何将 NOT 与 AND 混合使用?