将字符串转换为整数

时间:2011-11-15 21:27:55

标签: python string

如何将字符串转换为整数并从该更改中删除每个字符。 例如:

S = "--r10-"我希望这样:S = 10

这不起作用:

S = "--10-"
int(S)

6 个答案:

答案 0 :(得分:9)

您可以使用filter(str.isdigit, s)仅保留s的数字字符:

>>> s = "--10-"
>>> int(filter(str.isdigit, s))
10

请注意,这可能会导致包含多个数字的字符串出现意外结果

>>> int(filter(str.isdigit, "12 abc 34"))
1234

或负数

>>> int(filter(str.isdigit, "-10"))
10

修改:要使其适用于unicode个对象而非str个对象,请使用

int(filter(unicode.isdigit, u"--10-"))

答案 1 :(得分:2)

首先删除所有非数字:

int(''.join(c for c in "abc123def456" if c.isdigit()))

答案 2 :(得分:1)

您可以剥离-r

int("--r10-".strip('-r'))

答案 3 :(得分:0)

使用正则表达式替换为/ w,用“”空字符串替换非单词字符。然后施展它

答案 4 :(得分:0)

我更喜欢使用filterisdigit的Sven Marnach的答案,但如果您愿意,可以使用正则表达式:

>>> import re
>>> pat = re.compile(r'\d+')  #  '\d' means digit, '+' means one or more
>>> int(pat.search('--r10-').group(0))
10

如果字符串中有多个整数,则会拉出第一个整数:

>>> int(pat.search('12 abc 34').group(0))
12

如果您需要处理负数,请使用此正则表达式:

>>> pat = re.compile(r'\-{0,1}\d+')  # '\-{0,1}' means zero or one dashes
>>> int(pat.search('negative: -8').group(0))
-8

答案 5 :(得分:0)

这很简单,不需要您导入任何包。

def _atoi(self, string):
    i = 0
    for c in string:
        i += ord(c)
    return i