如何从不仅包含数字的字符串中转换int

时间:2016-10-10 18:08:25

标签: python

投射字符串很简单:

string1 = "12"
int1 = int(string1)

但是,如果我想从

中提取int,该怎么办?
string1 = "12 pieces"

演员阵容应该返回12.是否有一种pythonic方法可以做到并忽略任何不是数字的字符?

3 个答案:

答案 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",如果它返回121242[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()