我有一个类似于下面的列表:
['2019','Melbourne','region1','suburb1','\n', '2018','region1','Melbourne','\n']
我想根据'\n'打断(拆分)并存储列表的信息。这意味着我想从上面的列表中创建以下字符串:
string1='2019, Melbourne, region1, suburb1'
string2='2018, region1, Melbourne'
我知道如何使用简单的 for 循环和使用索引来做到这一点,但我想知道是否有人可以帮助我以更专业的方式完成上述任务。因为绕过索引使我的代码有点复杂且难以阅读。
您可以获得所需字符串的列表,使用 itertools.groupby
使用适当的键函数来分块列表和 str.join
将 block 转换为字符串:
from itertools import groupby
l = ['2019','Melbourne','region1','suburb1','\n', '2018','region1','Melbourne','\n']
[', '.join(g) for k, g in groupby(l, key=lambda s: s != '\n') if k]
# ['2019, Melbourne, region1, suburb1', '2018, region1, Melbourne']
请注意,groupby
返回一个惰性迭代器,产生同样惰性的组。因此,这不会构建任何不必要的中间内存列表。