根据字符

时间:2018-08-10 09:05:33

标签: python list split

嗨,我有一个元素列表,其中一些元素之间有一个',',我希望将它们分成单独的元素 例如:

['Agrigento',
 ' Tal Andar, Regie Curie',
 ' Landar ta il Geuenie',
 ' Landar ta il Guedi,  Casali Bisibud',
 'Aragonia',
 'Athene']

应如下所示:

 ['Agrigento',
     ' Tal Andar',
     ' Regie Curie',
     ' Landar ta il Geuenie',
     ' Landar ta il Guedi',  
     ' Casali Bisibud',
     'Aragonia',
     'Athene']

任何想法都是可能的。我想保留拆分的两个元素

2 个答案:

答案 0 :(得分:3)

您可以将list-comprehensionflattening arrays的标准方案结合使用:

lst = ['Agrigento',
 ' Tal Andar, Regie Curie',
 ' Landar ta il Geuenie',
 ' Landar ta il Guedi,  Casali Bisibud',
 'Aragonia',
 'Athene']

lst = [x for y in lst for x in y.split(',')]
print(lst)  # -> ['Agrigento', ' Tal Andar', ' Regie Curie', ' Landar ta il Geuenie', ' Landar ta il Guedi', '  Casali Bisibud', 'Aragonia', 'Athene']

注意:我们利用了以下事实:分割不包含用作定界符的字符的字符串会返回列表中的相同字符串:

>> 'a'.split('b')
['a']

因此,拼合没有障碍。有关更多信息,请参见split


最后,如@tobias所说,如果要消除名称前后的空格,可以使用strip()方法。只需将上面的理解修改为下面给出的理解即可。

lst = [x.strip() for y in lst for x in y.split(',')]
print(lst)  # -> ['Agrigento', 'Tal Andar', 'Regie Curie', 'Landar ta il Geuenie', 'Landar ta il Guedi', 'Casali Bisibud', 'Aragonia', 'Athene']

答案 1 :(得分:0)

elements = ['Agrigento', ' Tal Andar, Regie Curie', ' Landar ta il Geuenie', ' Landar ta il Guedi,  Casali Bisibud', 'Aragonia', 'Athene']
result = []

for elem in elements:
    if ',' in elem:
        result.extend([s for s in element.split(',')])
    else:
        result.append(elem)

print(result)