def convert(e):
try:
return float(e)
except:
return None
str = "the 1st year is 2004"
m = [e for e in str.split(" ") if len(e) >= 4 and convert(e)]
print m
>>> ['2004']
>>> str = "The year is 2004"
>>> re.findall(r"[-+]?\d*\.\d+|\d+", str)
['2004']
>>> str = "this was made in 2003.5"
>>> re.findall(r"[-+]?\d*\.\d+|\d+", str)
['2003.5']
使用列表理解而不使用正则表达式
正如其他人在不知道什么是“正确”数字的情况下提到的,很难给出适合所有用例的答案。然而,我假设这里的数字是4位数以上的
您可以在这里使用
regex
:你可以使用正则表达式。例如,这将获得给定字符串中的所有数字:
您可以微调正则表达式以符合“正确”数字的定义。你知道吗
相关问题 更多 >
编程相关推荐