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

2024-05-14 14:38:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个类似以下的列表:

['2019','Melbourne','region1','suburb1','\n', '2018','region1','Melbourne','\n']

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

string1='2019, Melbourne, region1, suburb1'
string2='2018, region1, Melbourne'

我知道如何使用一个简单的for循环和玩索引,但我想知道是否有人可以帮助我做一个更专业的方式提到的任务。因为到处玩索引会让我的代码有点复杂和不可读。你知道吗


Tags: 字符串代码信息列表for专业方式string1
3条回答

你可以这样做!使用re

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'

您可以获得所需字符串的列表,使用^{}和适当的键函数将列表分块,^{}将分块转换为字符串:

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

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

test=['2019','Melbourne','region1','suburb1','\n', '2018','region1','Melbourne','\n']
test_string=",".join(test)

sep_list= test_string.split("\n")

您将得到以“\n”分隔的字符串列表

相关问题 更多 >

    热门问题