在 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'].
请您参考如下方法:
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
