我想在只有至少两个或更多空格的地方拆分字符串。
例如
str = '10DEUTSCH GGS Neue Heide 25-27 Wahn-Heide -1 -1'
print str.split()
结果:
['10DEUTSCH', 'GGS', 'Neue', 'Heide', '25-27', 'Wahn-Heide', '-1', '-1']
我希望它看起来像这样:
['10DEUTSCH', 'GGS Neue Heide 25-27', 'Wahn-Heide', '-1', '-1']
答案 0 :(得分:46)
In [4]: import re
In [5]: text = '10DEUTSCH GGS Neue Heide 25-27 Wahn-Heide -1 -1'
In [7]: re.split(r'\s{2,}', text)
Out[7]: ['10DEUTSCH', 'GGS Neue Heide 25-27', 'Wahn-Heide', '-1', '-1']
答案 1 :(得分:8)
正如已经指出的,str
不是你的字符串的好名字,所以改为使用words
:
output = [s.strip() for s in words.split(' ') if s]
.split('') - 带有两个空格 - 将为您提供一个包含空字符串的列表,以及包含尾部/前导空格的项目。列表推导迭代该列表,保留任何非空白项(if s
),而.strip()负责任何前导/尾随空格。
答案 2 :(得分:5)
In [30]: strs='10DEUTSCH GGS Neue Heide 25-27 Wahn-Heide -1 -1'
In [38]: filter(None, strs.split(" "))
Out[38]: ['10DEUTSCH', 'GGS Neue Heide 25-27', ' Wahn-Heide', ' -1', '-1']
In [32]: map(str.strip, filter(None, strs.split(" ")))
Out[32]: ['10DEUTSCH', 'GGS Neue Heide 25-27', 'Wahn-Heide', '-1', '-1']
答案 3 :(得分:1)
在以下情况下:
(最初回答Split string at whitespace longer than a single space and tab characters, Python)
我将使用正则表达式拆分:2个或更多空格,然后过滤掉re.split
产生的空字符串:
import re
s = ' 1. 1. 2. 1 \tNote#EvE\t \t1\t \tE3\t \t 64\t 1. 3. 2. 120 \n'
result = [x for x in re.split("\s{2,}",s) if x]
print(result)
打印:
['1. 1. 2.', '1', 'Note#EvE', '1', 'E3', '64', '1. 3. 2. 120']
这不会保留开头/结尾的空格,但是已经很接近了。