python - 如何根据列表项拆分列表并创建相关字符串

标签 python list split

<分区>

我有一个类似于下面的列表:

['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 返回一个惰性迭代器,产生同样惰性的组。因此,这不会构建任何不必要的中间内存列表。

关于python - 如何根据列表项拆分列表并创建相关字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52474082/

相关文章:

python - NLTK/pyNLTK 可以工作 "per language"(即非英语),如何工作?

python - 打印字符串的变量/动态列表

.net - 用两个单引号分割字符串

r - 在向量 R 中的值分隔符处拆分元素

python - 获得满足和不满足条件的序列项的结果元组的最好、最有效的方法

Python - Tkinter 预选按钮

python - 我如何将 flask.url_for() 与 flask-restful 一起使用?

python - 为什么这个 3 行程序返回 None 作为输出?

python - 即使我创建了两个单独的列表,为什么 if 条件为真

java - 如何仅当后面的字符是数字而前一个字符是字母时才用 "-"分割字符串? Java/Scala