我把数据存储在一个遵循某种模式的列表中。数据来自于逐行读取文件并将某些行追加到列表中。当我打印列表时,数据遵循某种顺序,这很棒。
我可以通读这个列表来挑选数据块吗?
例如,如果列表中有:['|CODE|', 'name', 'group', 'info', '|CODE_1|', 'name', 'group', 'info',]
等等。
可以返回|代码|零件?
同样,每个字符串之间的字符串|代码|字符串的长度可能不同,即它们之间可能有4个字符串,或者6个、10个或1个字符串,等等。
如果我可以以任何方式修改我的问题,请告诉我:)
我还没有得到任何代码,因为我不确定如何解决这个问题.
2条答案
按热度按时间rqdpfwrv1#
您需要遵循以下几个步骤:
1.创建您需要的最终列表,
1.在第一个元素为
'|CODE|'
之后迭代列表,1.将元素添加到当前数据块,
1.如果检测到新块,请存储当前块并创建一个新块。
如果您需要包含开始块的字符串:
如何启动此类算法。
你需要一步一步来。
1.你知道你需要迭代列表,所以要执行for循环,
1.你需要一个
chunks
的列表,很容易做到,在循环之前创建一个空列表,这是你想要填充的最终数据结构,1.您希望在
chunks
中存储较短的chunk
数据:1.在循环之前将其初始化为空,
1.添加代码以将
chunk
追加到chunks
中。1.什么时候应该添加
chunk
?当检测到“新块标记”时,"|CODE"
开始字符串。执行if。1.并将
chunk
重置为空列表,现在,您启动一个新的chunk
,1.如果没有检测到新的
chunk
怎么办?将该值添加到当前chunk
中,每一步本身都很简单,但整个过程似乎让人应接不暇。当你不知道从哪里开始时,就把复杂的事情分解成小任务。如果某个步骤看起来太复杂而不容易完成,不要犹豫,可以再细分。当你在编写算法时,试着通过运行代码来验证你的步骤,并检查你当前工作的结果是否符合你的期望。
uidvcgyl2#
yourlist[yourlist.index('|CODE|')+1:yourlist.index('|CODE_1|')]
list.index
获取所需字符串的索引,剩下的只是在所需索引之间对列表进行切片