我有一个原始文本文件,其中包含以行分隔的EAN编号列表,我将其添加到列表(作为字符串),如下所示:
listofEAN = []
with open('Data', newline='\r\n') as inputfile:
for row in csv.reader(inputfile):
listofEAN.append(row)
这会创建一个“列表列表”(我不确定它为什么不创建单个列表?),格式为:
[['0075678660924'], ['0093624912613'], ['3299039990322'], ['0190295790394'], ['0075678660627'], ['0075678661150'], ...]
我正在尝试将列表转换为列表,每个列表包含10个EAN。因此,运行listofEAN[0]
将返回前10个EAN,依此类推。
我担心我正在努力做到这一点 - 我认为我需要使用某种循环,但是我在创建循环并将循环操作与列表语法相结合时遇到了麻烦。
任何指针都会非常感激。
编辑:与此处的查询类似:How do you split a list into evenly sized chunks?但此处对我导入列表的方式的更正特别重要。谢谢!
答案 0 :(得分:1)
CSV文件中的row
始终是一个列表,即使对于只有一列的文件也是如此。当你每行只有一个值时,你真的不需要使用CSV阅读器;只需从每一行中删除空格以创建一个平面列表,并使用标准的通用换行支持:
with open('Data') as inputfile:
# create a list of non-empty lines, with whitespace removed
stripped = (line.strip() for line in inputfile)
listofEAN = [line for line in stripped if line]
现在将它变成groups of a fixed size:
是微不足道的per_ten = [listofEAN[i:i + 10] for i in range(0, len(listofEAN), 10)]