将字符串拆分为非数字

时间:2019-02-17 13:53:42

标签: python python-3.x split

我正在尝试在不是数字的任何字符上拆分字符串。

orig = '0 1,2.3-4:5;6d7'
results = orig.split(r'\D+')

我希望在results中获得一个整数列表

  

0、1、2、3、4、5、6、7

但是我得到的是一个列表,其中包含一个与原始字符串匹配的单个字符串元素。

3 个答案:

答案 0 :(得分:5)

好吧...您正在使用str.split()-它需要将字符分割为-不是正则表达式。您的代码将在文本内的任何'\D+'-字符串上分割:

orig = 'Some\\D+text\\D+tosplit'
results = orig.split(r'\D+')  # ['Some', 'text', 'tosplit']

您可以改用re.split()

import re

orig = '0 1,2.3-4:5;6d7'
results = re.split(r'\D+',orig)
print(results)

获得

['0', '1', '2', '3', '4', '5', '6', '7']

使用data = list(map(int,results))转换为int。

答案 1 :(得分:1)

尝试一下:

orig = '0 1,2.3-4:5;6d7'
[i for i in orig if i.isdigit()]

答案 2 :(得分:0)

for i in '0 1,2.3-4:5;6d7':
    try:
        print(int(i),end=' ')
    except:
        continue

0 1 2 3 4 5 6 7