如果以“分隔”,则合并列表项/&引用;python

如果以“分隔”,则合并列表项/&引用;python,python,python-2.7,Python,Python 2.7,我有一个现有的列表,其中包含有关您的驾驶方向的信息。标题有时用“/”分隔。我只想合并用斜线分隔的列表项。在本例中,这将合并索引:5、7、9和11,并删除6、8和10 original_list = ['Keep', 'right', 'to continue on', 'Exit 18', ', follow signs for', 'Hoograven', '/', 'Lunetten', '/', 'Houten', '/', 'Nieuwegein', ''] output_list =

我有一个现有的列表,其中包含有关您的驾驶方向的信息。标题有时用“/”分隔。我只想合并用斜线分隔的列表项。在本例中,这将合并索引:5、7、9和11,并删除6、8和10

original_list = ['Keep', 'right', 'to continue on', 'Exit 18', ', follow signs for', 'Hoograven', '/', 'Lunetten', '/', 'Houten', '/', 'Nieuwegein', '']
output_list = ['Keep', 'right', 'to continue on', 'Exit 18', ', follow signs for', 'Hoograven/Lunetten/Houten/Nieuwegein', '']

我找不到一个好的解决方案,可以处理列表中不同数量的斜杠。对此有何想法?

这将字符串连接在一起,然后使用“替换”删除斜线周围的分隔符,然后再次拆分:

'@'.join(L).replace('@/@', '/').split('@')
是这样使用的:

>>> '@'.join(['Keep', 'right', 'to continue on', 'Exit 18', ', follow signs for', 'Hoograven', '/', 'Lunetten', '/', 'Houten', '/', 'Nieuwegein', '']).replace('@/@', '/').split('@')
['Keep', 'right', 'to continue on', 'Exit 18', ', follow signs for', 'Hoograven/Lunetten/Houten/Nieuwegein', '']

只要所选的分隔符不出现在字符串中,这种方法就可以工作。

这不是一种真正优雅的解决方案,但它应该可以工作。在某些情况下,它给出的结果与前面的答案不同(例如,斜杠作为原始列表中的第一个和最后一个元素),这可能对您有好处:

original_list = ['/', '/', 'Keep', 'right', 'to continue on', 'Exit 18', ', follow signs for', 'Hoograven', '/', '/', '/', 'Lunetten', '/', 'Houten', '/', 'Nieuwegein', '', '/', '/']
new_list = []

for i in range(len(original_list)):
    if len(new_list) > 0 and i > 0 and (original_list[i] == '/' or original_list[i-1] == '/'):
        new_list[-1] += original_list[i]
    else:
        new_list.append(original_list[i])

print new_list
结果:

['//Keep', 'right', 'to continue on', 'Exit 18', ', follow signs for', 'Hoograven///Lunetten/Houten/Nieuwegein', '//']

那很聪明,谢谢!这比你说的还要好;如果分隔符出现在字符串中,这不会对它造成任何损坏,因为它只是在之后再次合并。