2024-09-28 23:27:03 发布
网友
我必须从每个字符串中提取一个数字(一个测量的时间值)。我怎么能这么优雅呢?所有数字都是正数,最多有两位小数。(例如:2.3/40.09/101.4-E符号中没有数字)。我要查找的代码应该执行类似于以下伪代码的操作:
>>> "It took 2.3 seconds".strip(everything but ".1234567890") 2.3
如果您只想删除不在其他字符串中的所有字符,我建议您执行以下操作:
>>> to_filter = "It took 2.3 seconds" >>> "".join(_ for _ in to_filter if _ in ".1234567890") '2.3'
然而,这是一种非常简单的提取数字的方法。如果你想要的不仅仅是一个简单的字符过滤器,你应该使用Martijn Pieters的答案。
对于带有正则表达式的数字,请选择而不是strip:
import re numbers = re.compile('\d+(?:\.\d+)?') numbers.findall("It took 2.3 seconds")
演示:
>>> import re >>> numbers = re.compile('\d+(?:\.\d+)?') >>> numbers.findall("It took 2.3 seconds") ['2.3']
这将返回所有匹配项的列表;这也允许您在字符串中查找多个数字:
>>> numbers.findall("It took between 2.3 and 42.31 seconds") ['2.3', '42.31']
如果您只想删除不在其他字符串中的所有字符,我建议您执行以下操作:
然而,这是一种非常简单的提取数字的方法。如果你想要的不仅仅是一个简单的字符过滤器,你应该使用Martijn Pieters的答案。
对于带有正则表达式的数字,请选择而不是strip:
演示:
这将返回所有匹配项的列表;这也允许您在字符串中查找多个数字:
相关问题 更多 >
编程相关推荐