这是此问题的后续行动 - 2d list in python
@Kroolik的回答解决了我的问题,但我还是坚持了另一件事
考虑我的文件如下
junk....
junk....
junk
required....
junk...
required....
junk...
当我阅读thro csv.dictreader时,如何跳过垃圾线?另外,我只知道第一个和最后一个'必需'和'垃圾'之间。最初的'垃圾'可以是任何东西和任意数量的行。
我尝试了下面的
version_new = open(file_version_new, 'r')
flag = 0
for row in version_new:
if "JID" in row:
flag = 1 #starting of the 'required section
if "Total text" in row:
flag = 2 #end of required section
if flag == 1:
list_top_version_new.append(row.split())
if flag == 2:
#do something
reader = csv.DictReader(list_top_version_new)
for line in reader:
print(line)
但这似乎不起作用。任何帮助,将不胜感激。 感谢
答案 0 :(得分:1)
你可以在循环中循环,获得下一行,直到你结束:
for row in version_new:
if "JID" in row:
# in required section, loop until end:
for row in version_new:
if "Total text" in row:
break
list_top_version_new.append(row)
# Anything outside of the required section is ignored.
请注意,不需要row.split()
; csv.DictReader
为您提供了一个字典对象,该行已经拆分为值。
list_top_version_new
也是一个词典列表,无需再次通过csv.DictReader()
。既然你已经在输入文件的那一部分循环,为什么不在这个循环中直接做你的工作呢?因此,不要在最后使用list_top_version_new
上的单独循环,而是将list_top_version_new.append(row)
替换为您需要对该行执行的任何工作:
for row in version_new:
if "JID" in row:
# in required section, loop until end:
for row in version_new:
if "Total text" in row:
break
print(row)