python至少用2个空格拆分字符串

2024-04-24 08:19:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我只想在至少有两个或更多空白的地方分割字符串

比如说

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']

Tags: 字符串地方空白splitprintstrneueggs
3条回答
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']

对于Python3,用list包装filtermap的结果以强制迭代

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']

更新2021+答案

str.split现在接受要拆分的正则表达式。

more here

row = '10DEUTSCH        GGS Neue Heide 25-27     Wahn-Heide   -1      -1'
df = pd.DataFrame({'string' : row},index=[0])

print(df)
                                              string
0  10DEUTSCH        GGS Neue Heide 25-27     Wahn...

df1 = df['string'].str.split('\s{2,}',expand=True)
print(df1)

           0                     1           2   3   4
0  10DEUTSCH  GGS Neue Heide 25-27  Wahn-Heide  -1  -1

正如已经指出的,str不是字符串的好名称,因此使用words代替:

output = [s.strip() for s in words.split('  ') if s]

带有两个空格的.split(“”)将为您提供一个包含空字符串和带有尾随/前导空格的项的列表。列表理解遍历该列表,保留所有非空白项(if s),并且.strip()处理所有前导/尾随空格

相关问题 更多 >