我有一个测试文件,格式如下:
one
two
three
four
=
five
six
seven
eight
=
nine
ten
one
two
=
我正在编写一段python代码来创建一个列表,文本中的每个元素都是列表中的一项:
dump = sys.argv[1]
lines = []
with open(dump) as f:
for line in f:
x = line.strip()
lines.append(x)
print(lines)
线路列表=
['one', 'two', 'three', 'four', '=', 'five', 'six', 'seven', 'eight', '=', 'nine', 'ten', 'one', 'two', '=']
然后,我获得等号的索引,以便在以后尝试使用这些索引来创建一个新的列表,并组合字符串:
equals_indexes = [i for i, x in enumerate(lines) if x == '=']
equals_indexes列表:
[4, 9, 14]
直到这一点,我都很好。现在,我想将第一个索引之前的字符串一、二、三、四连接为new_list元素1。我想连接等号1和2之间的下一组字符串,以及等号2和3之间的下一组字符串,以产生以下结果:
[[one two three four], [five six seven eight], [nine ten one two]]
我尝试通过迭代equals索引列表,然后迭代列表行来做到这一点:
for i in equals_indexes:
sequences = ""
for x,y in enumerate(lines):
if x < i:
sequences = ' '.join(lines[x:i])
groups.append(sequences)
print(groups)
这会产生以下结果:
['one two three four', 'two three four', 'three four', 'four', 'one two three four = five six seven eight', 'two three four = five six seven eight', ....]
我理解为什么会发生这种情况,因为在x的每次迭代中,它都会检查它是否小于i,如果是,则将x处的每个字符串附加到字符串"sequences“中。我之所以这样做,是因为我有一个大文件,其中包含与程序的一次迭代相对应的巨大文本块。程序的迭代1和迭代2之间的分隔符是一行中的单个'=‘。这样,在我能够用等号拆分列表元素之后,我就可以解析它们。任何帮助都是最好的!
https://stackoverflow.com/questions/51641361
复制相似问题