python 是否可以迭代列表中的元素并根据重复字符返回列表块?

iswrvxsc  于 2023-02-11  发布在  Python
关注(0)|答案(2)|浏览(117)

我把数据存储在一个遵循某种模式的列表中。数据来自于逐行读取文件并将某些行追加到列表中。当我打印列表时,数据遵循某种顺序,这很棒。
我可以通读这个列表来挑选数据块吗?
例如,如果列表中有:
['|CODE|', 'name', 'group', 'info', '|CODE_1|', 'name', 'group', 'info',]等等。
可以返回|代码|零件?
同样,每个字符串之间的字符串|代码|字符串的长度可能不同,即它们之间可能有4个字符串,或者6个、10个或1个字符串,等等。
如果我可以以任何方式修改我的问题,请告诉我:)
我还没有得到任何代码,因为我不确定如何解决这个问题.

rqdpfwrv

rqdpfwrv1#

您需要遵循以下几个步骤:
1.创建您需要的最终列表,
1.在第一个元素为'|CODE|'之后迭代列表,
1.将元素添加到当前数据块,
1.如果检测到新块,请存储当前块并创建一个新块。

lst = ["|CODE|", "name", "group", "info", "|CODE_1|", "name", "group", "info"]

chunk = []
chunks = []
for e in lst[lst.index("|CODE|") + 1 :]:
    if e.startswith("|CODE"):
        chunks.append(chunk)
        chunk = []
    else:
        chunk.append(e)
if chunk:
    chunks.append(chunk)
print(chunks)
# [['name', 'group', 'info'], ['name', 'group', 'info']]

如果您需要包含开始块的字符串:

chunk = ["|CODE|"]  # start chunk with first marker
...
        chunk = [e]  # each chunk start with the marker
# [['|CODE|', 'name', 'group', 'info'], ['|CODE_1|', 'name', 'group', 'info']]

如何启动此类算法。

你需要一步一步来。
1.你知道你需要迭代列表,所以要执行for循环,
1.你需要一个chunks的列表,很容易做到,在循环之前创建一个空列表,这是你想要填充的最终数据结构,
1.您希望在chunks中存储较短的chunk数据:
1.在循环之前将其初始化为空,
1.添加代码以将chunk追加到chunks中。
1.什么时候应该添加chunk?当检测到“新块标记”时,"|CODE"开始字符串。执行if。
1.并将chunk重置为空列表,现在,您启动一个新的chunk
1.如果没有检测到新的chunk怎么办?将该值添加到当前chunk中,
每一步本身都很简单,但整个过程似乎让人应接不暇。当你不知道从哪里开始时,就把复杂的事情分解成小任务。如果某个步骤看起来太复杂而不容易完成,不要犹豫,可以再细分。当你在编写算法时,试着通过运行代码来验证你的步骤,并检查你当前工作的结果是否符合你的期望。

uidvcgyl

uidvcgyl2#

yourlist[yourlist.index('|CODE|')+1:yourlist.index('|CODE_1|')]
list.index获取所需字符串的索引,剩下的只是在所需索引之间对列表进行切片

相关问题