以简单的方法从Python字符串中提取数字
以简单的方法从Python字符串中提取数字
这个问题在这里已经有了答案::
我有一个字符串,其中包含一个数字和一个单位,例如
x= '$120' y = ' 90 Degrees F' banana = '200 kgm' orange = '300 gm' total_weight = banana + orange/1000
例如,我想加重量
total_weight = 200 + 300/1000
谢谢!
我尝试仅提取数字以进行一些操作...有什么简单的方法可以做到这一点吗?我仅使用这两种格式,即数字在字符串的开头或结尾...
admin 更改状态以发布 2023年5月22日
不使用 regex
,你可以这样做:
def get_num(x): return int(''.join(ele for ele in x if ele.isdigit()))
结果:
>>> get_num(x) 120 >>> get_num(y) 90 >>> get_num(banana) 200 >>> get_num(orange) 300
编辑:
回答追问。
如果我们知道给定字符串中唯一的句点是小数点,那么提取浮点数就很容易:
def get_num(x): return float(''.join(ele for ele in x if ele.isdigit() or ele == '.'))
结果:
>>> get_num('dfgd 45.678fjfjf') 45.678
从一个字符串中提取数字的最简单的方法是使用正则表达式和findall
函数。
>>> import re >>> s = '300 gm' >>> re.findall('\d+', s) ['300'] >>> s = '300 gm 200 kgm some more stuff a number: 439843' >>> re.findall('\d+', s) ['300', '200', '439843']
也许你需要更复杂的东西,但这是一个不错的第一步。
请注意,仍需在结果上调用int
函数才能得到适当的数字类型(而不是另一个字符串):
>>> map(int, re.findall('\d+', s)) [300, 200, 439843]