【发布时间】:2017-12-01 04:06:00
【问题描述】:
我有一个包含 CSV 内容的字符串。我把它变成了这样的列表:
from StringIO import StringIO
import csv
f = StringIO(list_csv)
my_list = csv.reader(f, delimiter=',')
现在我想在列表上循环两次,但第二次尝试循环时,代码会像列表为空一样遍历:
for item in my_list:
code = item[1]
print "code: "+code
for item in my_list:
desc = item[2]
print "desc: "+desc
(此代码出于演示目的进行了简化,我无法在单个循环中组合执行)
我认为列表仍然附加到 StringIO,当它完成循环时,它已经完成读取,所以它不会再次读取。是否有一种方法可以将其转换为内存中的常规列表,我可以循环多次?我觉得手动运行循环复制值是在重新发明轮子......但如果没有其他选择,我可以这样做。只是要求一些不那么冗长的代码。谢谢!
【问题讨论】:
-
my_list 是一个读取器对象,将其转换为列表,可能像这样
new_list = list(my_list)并循环遍历new_list -
谢谢。您应该发布作为答案。 ;) 是的....这就是我现在在 python 的新手。 :$