拆分字符串,只在python中获取数字?

时间:2010-12-29 09:58:49

标签: python string split

我有一个类似"GoTo: 7018 6453 12654\n"的字符串我只想得到类似这样的数字['7018', '6453', '12654'],我尝试使用正则表达式,但是我不能拆分字符串以获得正好数字这里是我的代码:

样本1:

splitter = re.compile(r'\D');
match1 = splitter.split("GoTo: 7018 6453 12654\n")

my output is: ['', '', '', '', '', '', '', '', '7018', '6453', '12654', '']

样本2:

splitter = re.compile(r'\W');
match1 = splitter.split("GoTo: 7018 6453 12654\n")

my output is: ['GoTo', '', '7018', '6453', '12654', '']

5 个答案:

答案 0 :(得分:13)

如果您的所有数字都是正整数,则可以使用isdigit()方法在没有正则表达式的情况下执行此操作:

>>> text = "GoTo: 7018 6453 12654\n"
>>> [token for token in text.split() if token.isdigit()]
['7018', '6453', '12654']

答案 1 :(得分:6)

>>> re.findall(r'\d+', 'GoTo: 7018 6453 12654\n')
['7018', '6453', '12654']

答案 2 :(得分:3)

>>> import re
>>> re.findall("[0-9]+", "GoTo: 7018 6453 12654\n")
['7018', '6453', '12654']
>>> 

答案 3 :(得分:2)

您可以按照示例1中的当前方法以及此代码:

filter (lambda a: a != '', match1)

答案 4 :(得分:1)

试试这个:

import re
splitter = re.compile(r'\d+')
match1 = splitter.findall("GoTo: 7018 6453 12654\n")
print match1