确定列表长度以正确更新CSV文件

2024-10-02 22:24:08 发布

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

我正在从事一个项目,在那里我有信息,我需要用这些信息更新CSV文件。信息在列表中,但列表的长度可能会有所不同。我需要更新CSV文件以获得所有信息,但是如果列表长度小于5,CSV文件应该有一些空值。 这是我的CSV文件:

Name,1,2,3,4,5
Adam,,,,,

变量listBios在前面定义过,它包含的只是不同的信息。 这是我的密码:

with open("testing copy.csv", "w", newline = '') as wfile:
    headers = ["Name", "1", "2", "3", "4", "5"]
    csv_writer = DictWriter(wfile, fieldnames = headers)
    csv_writer.writeheader()
    csv_writer.writerow({
        "Name": "Adam",
        '1': listBios[0],
        '2': listBios[1],
        '3': listBios[2],
        '4': listBios[3],
        '5': listBios[4]
    })

这将抛出错误:

'4': listBios[3],
IndexError: list index out of range

因为listlistBios的长度是3,而不是4。我怎样才能让它检测列表中有多少项,并且只将这些项添加到CSV中,这样我就不会出错

非常感谢你

亚当


Tags: 文件csv项目name信息密码列表定义
3条回答

您可以创建一个长度始终为5的临时列表。如果listBios的长度小于5,则使用[''] * (5 - len(listBios))将空字符串元素添加到临时列表中:

with open("testing copy.csv", "w", newline = '') as wfile:
    headers = ["Name", "1", "2", "3", "4", "5"]
    csv_writer = DictWriter(wfile, fieldnames = headers)
    csv_writer.writeheader()
    csv_list = listBios + [''] * (5 - len(listBios))
    csv_writer.writerow({
        "Name": "Adam",
        '1': csv_list[0],
        '2': csv_list[1],
        '3': csv_list[2],
        '4': csv_list[3],
        '5': csv_list[4]
    })

您可以在listBios上使用iter(),然后使用默认值调用next()

iterBios = iter(listBios)


with open("testing copy.csv", "w", newline = '') as wfile:
    headers = ["Name", "1", "2", "3", "4", "5"]
    csv_writer = DictWriter(wfile, fieldnames = headers)
    csv_writer.writeheader()
    csv_writer.writerow({
        "Name": "Adam",
        '1': next(iterBios, ''),
        '2': next(iterBios, ''),
        '3': next(iterBios, ''),
        '4': next(iterBios, ''),
        '5': next(iterBios, '')
    })

要确定列表的长度,请使用len()函数。 例如:

ex = ['dog', 'cat', 'test']
length_of_ex = len(ex)
print(length_of_ex)

输出:

3

相关问题 更多 >