gpt4 book ai didi

python - 从 csv 文件构建 Python 字典时如何跳过空白单元格?

转载 作者:太空宇宙 更新时间:2023-11-03 14:10:25 24 4
gpt4 key购买 nike

我有一个具有以下结构的 csv 文件:

Name:   Tags:   col4    col4    col5    col6    col7
T1 G1 G2 G3 G4 G5
T2 G1 G2
T3 G1 G2 G3
T4 G1 G2 G3 G4 G5 G6
T5 G1 G2 G3 G4

实际文件有 279 列,所有行的长度都不同。我的目标是将每个名称作为键,然后将相应的标签作为 python 字典中的值列表。

我当前的代码是这样的:

import csv

my_dict = {}
with open('infile.csv') as file:
reader = csv.reader(file)
for row in reader:
my_dict[row[0]] = row[1:]
print(my_dict)

这可行,但空白单元格作为值包含在字典中,例如;

{T1: ['G1', 'G2', 'G3', 'G4', 'G5', ''], T2: ['G1', 'G2', '', '', '', ''] etc.

而我的目标是得到这个:

{T1: ['G1', 'G2', 'G3', 'G4', 'G5'], T2: ['G1', 'G2'] etc.

我找不到任何跳过空白单元格的 csv.reader 选项。我尝试过 csv.DictReader (显然这会自动忽略空白单元格?),但它不允许切片,而且我无法命名和指定 279 列。

我知道这里有类似的问题,但就我希望如何读取文件而言,这些问题似乎都不是我正在寻找的问题。

我已经被困在这个问题上有一段时间了,所以我们将不胜感激。

最佳答案

您可以使用列表理解来选择非空单元格,如下所示:

import csv

my_dict = {}

with open('infile.csv', newline='') as f_input:
csv_input = csv.reader(f_input)
header = next(csv_input) # skip over the header row

for row in csv_input:
my_dict[row[0]] = [cell for cell in row[1:] if cell]

print(my_dict)

给你my_dict包含:

{'T1': ['G1', 'G2', 'G3', 'G4', 'G5'], 'T2': ['G1', 'G2'], 'T3': ['G1', 'G2', 'G3'], 'T4': ['G1', 'G2', 'G3', 'G4', 'G5', 'G6'], 'T5': ['G1', 'G2', 'G3', 'G4']}

注意:使用 Python 3.x,应使用 newline='' 打开该文件。与 CSV 对象一起使用时。

关于python - 从 csv 文件构建 Python 字典时如何跳过空白单元格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48548778/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com