在这种情况下是否有返回 [] 的 split 函数?

Bas*_*asj 3 python split list

当然我们有:

"1,2,3".split(",")  # ["1", "2", "3"]
"1".split(",")      # ["1"]
Run Code Online (Sandbox Code Playgroud)

而且这在某些情况下有时会出现问题(*):

"".split(",")       # [""]
Run Code Online (Sandbox Code Playgroud)

是否有一种内置方法(可能带有参数或特定函数)可以:

"".split(",", allow_empty=True)       # []
Run Code Online (Sandbox Code Playgroud)

这(有时)是有意义的:输入为空,因此输出列表应该为空。

(*) 示例情况:

for element in s.split(","):
    print(f"we have the element {element}")

# works for s = "1, 2, 3"
# works for s = "1"
# doesn't work for s = ""  => the loop should be empty
Run Code Online (Sandbox Code Playgroud)

moz*_*way 5

据我所知,但您可以使用正则表达式re.findall

import re

re.findall(r'[^,]+', '1,2,3')
# ['1', '2', '3']

re.findall(r'[^,]+', '1')
# ['1']

re.findall(r'[^,]+', '')
# []
Run Code Online (Sandbox Code Playgroud)

请注意,这也会丢弃输入字符串中的空字符串:

re.findall(r'[^,]+', '1,,3')
# ['1', '3']
Run Code Online (Sandbox Code Playgroud)