我有一张单子,我想按10来分组

2024-09-30 05:17:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我得到了一个原始文本文件,其中包含一个以行分隔的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,以此类推。你知道吗

恐怕我很难做到这一点-我想我需要使用某种循环,但我在创建循环和将循环操作与列表语法相结合方面遇到了问题。你知道吗

任何指点都将不胜感激。你知道吗

EDIT:类似于这里的查询:How do you split a list into evenly sized chunks?,但是这里对我导入列表的方式的更正特别有趣。谢谢您!你知道吗


Tags: 字符串in列表fordataaswithnewline
1条回答
网友
1楼 · 发布于 2024-09-30 05:17:36

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)]

相关问题 更多 >

    热门问题