首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何根据列表项拆分列表并创建相关字符串

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

Stack Overflow用户
提问于 2018-09-24 14:58:05
回答 5查看 68关注 0票数 1

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

代码语言:javascript
运行
复制
['2019','Melbourne','region1','suburb1','\n', '2018','region1','Melbourne','\n']

我想要中断(拆分)并存储基于'\n‘的列表信息。这意味着我想从上面的列表中创建以下字符串:

代码语言:javascript
运行
复制
string1='2019, Melbourne, region1, suburb1'
string2='2018, region1, Melbourne'

我知道如何使用一个简单的for循环和执行索引,但我想知道是否有人可以帮助我以一种更专业的方式完成上述任务。因为绕过索引会让我的代码变得有点复杂和不可读。

EN

回答 5

Stack Overflow用户

发布于 2018-09-24 15:06:17

您可以使用带有适当键函数的itertools.groupby来分块列表,并使用str.join将分块转换为字符串,从而获得所需字符串的列表:

代码语言:javascript
运行
复制
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返回一个惰性迭代器,该迭代器产生同样的惰性组。因此,这不会构建任何不必要的中间内存列表。

票数 4
EN

Stack Overflow用户

发布于 2018-09-24 15:09:34

你可以做这样的事情!使用re

代码语言:javascript
运行
复制
import re
l = ['2019','Melbourne','region1','suburb1','\n', '2018','region1','Melbourne','\n']
res = re.split("[\r\n]+",' '.join(l))[:-1]
string1 = res[0].strip().replace(' ',', ')
string2 = res[1].strip().replace(' ',', ')

# string1 --> '2019, Melbourne, region1, suburb1'
# string2 --> '2018, region1, Melbourne'
票数 1
EN

Stack Overflow用户

发布于 2018-09-24 15:14:46

一种可能的解决方案是使用join()将给定的列表连接成一个字符串,然后对该字符串使用split来拆分到list。代码如下:

代码语言:javascript
运行
复制
test=['2019','Melbourne','region1','suburb1','\n', '2018','region1','Melbourne','\n']
test_string=",".join(test)

sep_list= test_string.split("\n")

您将获得以"\n“分隔的字符串列表

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52474082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档