我有一个包含驱动器方向信息的现有列表。标题有时用“/”分隔。我想合并仅由这样的斜杠分隔的列表项。在示例中,这将合并索引: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', '']
我找不到一个可以处理列表中不同数量的斜杠的好解决方案。有什么想法吗?
答案 0 :(得分:1)
将字符串连接在一起,然后使用replace删除斜杠周围的分隔符,然后再将其拆分:
'@'.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', '']
只要所选的分隔符不出现在字符串中,就可以正常工作。
答案 1 :(得分:0)
不是很优雅的解决方案,但它应该有效。在某些情况下,它会提供与上一个答案不同的结果(例如,斜杠作为original_list
中的第一个和最后一个元素),这可能对您有好处:
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', '//']