【发布时间】:2019-07-11 01:11:21
【问题描述】:
我正在尝试在任何不是数字的字符上拆分字符串。
orig = '0 1,2.3-4:5;6d7'
results = orig.split(r'\D+')
我希望得到results中的整数列表
0、1、2、3、4、5、6、7
但相反,我得到一个列表,其中包含与原始字符串匹配的单个字符串元素。
【问题讨论】:
标签: 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
但相反,我得到一个列表,其中包含与原始字符串匹配的单个字符串元素。
【问题讨论】:
标签: python python-3.x split
for i in '0 1,2.3-4:5;6d7':
try:
print(int(i),end=' ')
except:
continue
【讨论】:
试试这个:
orig = '0 1,2.3-4:5;6d7'
[i for i in orig if i.isdigit()]
【讨论】:
'12 142, 92'),您将得到 [1,2,1,4,2,9,2] 而不是 [12,142,92]
嗯......你正在使用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。
【讨论】:
re.split(r'(\D+)', orig)