В 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']
.