如何将字符串转换为整数并从该更改中删除每个字符。 例如:
S = "--r10-"
我希望这样:S = 10
这不起作用:
S = "--10-"
int(S)
答案 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)
我更喜欢使用filter
和isdigit
的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