python - 如何从句子中提取单词并检查其中是否不存在单词
问题描述
这是我下面的代码。我需要从用户那里获取一个输入(一个句子)并检查其中是否有从 0 到 10 的任何数字。我知道有很多方法可以解决它,例如split()
,isalnum()
等等,但我只需要帮助将它们放在一起。请在下面找到我的代码:
sentence1 = input("Enter any sentence (it may include numbers): ")
numbers = ["1","2","3","4","5","6","7","8","9","10","0"]
ss1 = sentence1.split()
print(ss1)
if numbers in ss1:
print("There are numbers between 0 to 10 in the sentece")
else:
print("There are no numbers in the sentence”)
谢谢 :)
编辑:预期输出应该是这样的:
Enter any sentence (it may include numbers): I am 10 years old
There are numbers between 0 and 10 in this sentence
解决方案
我会使用正则表达式:
def contains_nums(s):
import re
m = re.search('\d+', s)
if m:
return f'"{s}" contains {m.group()}'
else:
return f'"{s}" contains no numbers'
例子:
>>> contains_nums('abc 10')
'"abc 10" contains 10'
>>> contains_nums('abc def')
'"abc def" contains no numbers'
注意。这只是检查第一个数字,re.findall
如果您需要全部使用。这也是在单词中查找数字,如果您只想要单独的数字,请使用带有单词边界 ( \b\d+\b
) 的正则表达式,最后,如果您想限制为 0-10 个数字,请使用(?<!\d)1?\d(?!\d)
(或\b(?<!\d)1?\d(?!\d)\b
用于独立数字)
更完整的解决方案
def contains_nums(s, standalone_number=False, zero_to_ten=False):
import re
regex = r'(?<!\d)1?\d(?!\d)' if zero_to_ten else '\d+'
if standalone_number:
regex = r'\b%s\b' % regex
m = re.search(regex, s)
if m:
return f'"{s}" contains {m.group()}'
else:
a = "standalone " if standalone_number else ""
b = "0-10 " if zero_to_ten else ""
return f'"{s}" contains no {a}{b}numbers'
>>> contains_nums('abc100', standalone_number=False, zero_to_ten=False)
'"abc100" contains 100'
>>> contains_nums('abc100', standalone_number=True, zero_to_ten=False)
'"abc100" contains no standalone numbers'
>>> contains_nums('abc 100', standalone_number=True, zero_to_ten=True)
'"abc 100" contains no standalone 0-10 numbers'
推荐阅读
- html - 在 Open edX 中查询关于上传
- java - 如何调用这个泛型方法?
- ios - 如何快速检查时间重叠?
- node.js - 在 NodeJS 中访问 Laravel .env 文件配置
- javascript - 复选框 .checked 属性始终为 false
- d3.js - D3:创建响应范围条形图
- javascript - botbuilder v4 nodejs在提示对话框中添加快速回复facebook messenger
- objective-c - 游戏中心多人配对问题
- image-segmentation - 流域分割算法必然会失败的情况有哪些?
- kubernetes - 如何删除 Kubeflow 集群?