Skip to main content
 首页 » 编程设计

python之在 Python 函数中灵活拆分输入字符串

2025年05月04日23开发

在 Python 中,转换这种结构的最优雅的方式是什么:

['group1, group2, group3'] 

进入这个结构:

['group1', 'group2', 'group3'] 

并可能回来。

我们需要的是一个函数,它可以采用逗号分隔值的字符串列表(第一种情况)或具有相同值的字符串列表(第二种情况)并将它们作为一个相同的对象处理:列表字符串。

在伪代码中:

x = ['group1, group2, group3'] 
y = ['group1', 'group2', 'group3'] 
 
f(x) <==> f(y)    <- equivalent behavior 

此外,如果按照建议使用 split():

有没有办法使定界符空间不敏感或有条件或正则表达式:我想得到 ['group1', 'group2', 'group3'] 结果['group1, group2, group3'] 或 ['group1,group2,group3'] 甚至这个 ['group1, group2,group3'](或其组合)作为输入?

更多说明:

>>> single_string = False 
>>> a = ['group1', 'group2', 'group3','group4'] 
>>> [t.strip() for t in [a][0].split(',')] if single_string else a 
['group1', 'group2', 'group3', 'group4'] 
>>> single_string = True 
>>> b = ['group1,group2, group3,  group4'] 
>>> [t.strip() for t in [b][0].split(',')] if single_string else b 
Traceback (most recent call last): 
  File "<stdin>", line 1, in <module> 
AttributeError: 'list' object has no attribute 'split' 
>>> 

基本上,我正在寻找最优雅的 Python 条件表达式,它会在上面的 a 和 b 情况下产生相同的输出:[ 'group1', 'group2', 'group3', 'group4'].

请您参考如下方法:

你可以使用 split和 join从一种表示到另一种表示:

print('group1, group2, group3'.split(', ')) 
# ['group1', 'group2', 'group3'] 
print(', '.join(['group1', 'group2', 'group3'])) 
# group1, group2, group3 

在函数中你可以这样做:

def f(items, index, separator=', '): 
    if isinstance(items, str): 
        items = items.split(separator) 
    return items[index] 
 
 
print(f('group1, group2, group3', 1))        # group2 
print(f(['group1', 'group2', 'group3'], 1))  # group2