首页 > 解决方案 > 有多个空格时如何 re.split(" ", string)?

问题描述

d = ["11:00 PM", "13!00 PM", "11 00 PM"]

for i in d:
    print(re.split(" ", i)

对于其他人来说没关系,打印["11:00", "PM"]["13!00", "PM"],但对于11 00 PM它打印["11", "00", "PM"]。如何更改正则表达式,使其也返回["11 00", "PM"]那里?

标签: pythonregexsplit

解决方案


对于这些示例,您可以使用 normal text.split()(或者更确切地说text.rsplit())而不是regex

d = ["11:00 PM", "13!00 PM", "11 00 PM"]

for i in d:
    print(i.rsplit(" ", 1))

结果:

['11:00', 'PM']
['13!00', 'PM']
['11 00', 'PM']

编辑:

如果要删除“白色字符” - 空格,制表符,输入 - 在两边,那么你可以使用 normal text.strip()。类似的rstrip()lstrip()适用于右侧或左侧。或者strip(' '),如果您只想删除空格并保留制表符并输入,请使用。

i = i.strip().rsplit(" ", 1)

d = [" 11:00 PM", "\n 13!00 PM", "11 00 PM"]

for i in d:
    print(i.strip().rsplit(" ", 1))

编辑:如果你想保留结果,那么你可以追加到列表

d = [" 11:00 PM", "\n 13!00 PM", "11 00 PM"]

results = []    

for i in d:
    results.append(i.strip().rsplit(" ", 1))

print(results)

或者您可以使用@Alexander 在评论中所说的列表理解

d = [" 11:00 PM", "\n 13!00 PM", "11 00 PM"]

results = [x.strip().rsplit(maxsplit=1) for x in d]

print(results)

推荐阅读