在python中只获取字符串中的数字

时间:2015-02-15 13:07:36

标签: python

我想只从字符串中获取数字。例如,我有类似的东西

just='Standard Price:20000'

我只想打印出来

20000

所以我可以乘以任意数字。

我试过

just='Standard Price:20000'
just[0][1:]

我得到了

 ''

最好的方法是什么?我是个菜鸟。

9 个答案:

答案 0 :(得分:4)

你可以使用正则表达式:

import re
just = 'Standard Price:20000'
price = re.findall("\d+", just)[0]

OR

price = just.split(":")[1]

答案 1 :(得分:2)

您可以使用string.split功能。

>>> just='Standard Price:20000'
>>> int(just.split(':')[1])
20000

答案 2 :(得分:1)

您可以使用RegEx

>>> import re
>>> just='Standard Price:20000'
>>> re.search(r'\d+',just).group()
'20000'

参考:\d匹配从09

的数字

注意:您的错误

just[0]评估为S,因为它是0个字符。因此S[1:]返回一个''的空字符串,因为该字符串的长度为1,且长度为1之后没有其他字符

答案 3 :(得分:1)

您也可以尝试:

int(''.join(i for i in just if i.isdigit()))

答案 4 :(得分:1)

如果您不想使用正则表达式,则更简单的方法是使用切片。请记住,如果文本的结构保持不变,此方法可以提取任何数字。

just = 'Standard Price:20000'
reqChar = len(just) - len('Standard Price:')
print(int(just[-reqChar:]))
>> 20000

答案 5 :(得分:0)

如果想简化正则表达式,还可以尝试使用Python的内置函数filterstr.isdigit函数来获取数字字符串并将返回的字符串转换为整数。这不适用于浮点数,因为str.isdigit会过滤掉小数点字符。

Python Built-in Functions Filter

Python Built-in Types str.isdigit

考虑问题中的相同代码:

>>> just='Standard Price:20000'
>>> price = int(filter(str.isdigit, just))
>>> price
20000
>>> type(price)
<type 'int'>
>>>

答案 6 :(得分:0)

您可以使用str.isdigit方法按数字过滤字符串。

just='Standard Price:20000'
print int(filter(str.isdigit, just))

输出:20000

答案 7 :(得分:0)

我认为最清晰的方法是使用re.sub()函数:

import re

just = 'Standard Price:20000'
only_number = re.sub('[^0-9]', '', just)
print(only_number)
# Result: '20000'

答案 8 :(得分:0)

我认为bdev TJ's answer

price = int(filter(str.isdigit, just))

仅适用于Python2,对于Python3(我检查的是3.7)请使用:

price = int ( ''.join(filter(str.isdigit, just) ) )

显然,如前所述,该方法只会产生一个整数,该整数包含输入字符串中按顺序排列的所有数字0-9,仅此而已。