有多个空格时如何re.split(“”,string)?

Kar*_*epK 2 python regex split

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

for i in d:
    print(re.split(" ", i)
Run Code Online (Sandbox Code Playgroud)

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

fur*_*ras 7

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

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

for i in d:
    print(i.rsplit(" ", 1))
Run Code Online (Sandbox Code Playgroud)

结果:

['11:00', 'PM']
['13!00', 'PM']
['11 00', 'PM']
Run Code Online (Sandbox Code Playgroud)

编辑:

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

i = i.strip().rsplit(" ", 1)
Run Code Online (Sandbox Code Playgroud)
d = [" 11:00 PM", "\n 13!00 PM", "11 00 PM"]

for i in d:
    print(i.strip().rsplit(" ", 1))
Run Code Online (Sandbox Code Playgroud)

编辑:如果您想保留结果,则可以追加到列表

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

results = []    

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

print(results)
Run Code Online (Sandbox Code Playgroud)

或者您可以使用列表理解,如@Alexander在评论中所述

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

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

print(results)
Run Code Online (Sandbox Code Playgroud)

  • 或者使用列表推导:`[x.strip()。rsplit(maxsplit = 1)for d in x]` (2认同)