我想只从字符串中获取数字。例如,我有类似的东西
just='Standard Price:20000'
我只想打印出来
20000
所以我可以乘以任意数字。
我试过
just='Standard Price:20000'
just[0][1:]
我得到了
''
最好的方法是什么?我是个菜鸟。
答案 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
匹配从0
到9
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的内置函数filter
和str.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)
price = int(filter(str.isdigit, just))
仅适用于Python2,对于Python3(我检查的是3.7)请使用:
price = int ( ''.join(filter(str.isdigit, just) ) )
显然,如前所述,该方法只会产生一个整数,该整数包含输入字符串中按顺序排列的所有数字0-9,仅此而已。