投射字符串很简单:
string1 = "12"
int1 = int(string1)
但是,如果我想从
中提取int,该怎么办?string1 = "12 pieces"
演员阵容应该返回12.是否有一种pythonic方法可以做到并忽略任何不是数字的字符?
答案 0 :(得分:1)
这个怎么样?
>>> string1 = "12 pieces"
>>> y = int(''.join([x for x in string1 if x in '1234567890']))
>>> print(y)
12
或更好:
>>> string1 = "12 pieces"
>>> y = int(''.join([x for x in string1 if x.isdigit() ]))
>>> print(y)
12
答案 1 :(得分:1)
有没有办法做到这一点并忽略任何不是数字的字符?
忽略除数字之外的任何东西可能都不是一个好主意。如果字符串包含"12 pieces 42"
,如果它返回12
,1242
,[12, 42]
或引发异常会怎样?
您可以拆分字符串并将第一个元素转换为int
:
In [1]: int('12 pieces'.split()[0])
Out[1]: 12
答案 2 :(得分:1)
假设字符串的第一部分是数字,一种方法是使用正则表达式匹配:
import re
def strint(str):
m=re.match("^[0-9]+", str)
if m:
return int(m.group(0))
else:
raise Exception("String does not start with a number")
这种方法的优点是即使是只有数字的字符串也可以轻松转换,因此您可以使用此功能代替int()