以简单的方法从Python字符串中提取数字

20 浏览
0 Comments

以简单的方法从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日
0
0 Comments

不使用 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

0
0 Comments

从一个字符串中提取数字的最简单的方法是使用正则表达式和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]

0