使用cs模块读取Python中的csv文件

2024-10-01 07:24:36 发布

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

我试图用csv模块读取Python中的csv文件。 为此,我使用reader变量:

 with open('oneOrganization.csv', 'r', newline='') as csvfile2:
    reader2 = csv.DictReader(csvfile2, delimiter=',')

    for row in reader2:
        if row["role"] == []:
            row_dict['Role'] = "User"
        else:
            row_dict['Role'] = row["role"]

然而,在运行该程序时,我意识到它确实进入了循环,尽管cvs文件存在并且确实被调用了一个组织.csv. 那是什么原因呢?在

我从Python开始,通常这个方法是有效的。在


Tags: 模块文件csvwithnewlineopendictreader
1条回答
网友
1楼 · 发布于 2024-10-01 07:24:36

阻止代码访问if循环if row['Role']==[]的问题是,您试图以错误的方式查找空元素。
试试这个:

方法1:

with open('oneOrganization.csv','r') as file:
    reader = csv.DictReader(file,delimiter=',')
    my_list = list(reader)
    for row in reader:
        if row['test1'] in (None,''): # to check if cell is empty
            row_dict['Role'] = "User"
        else:
            row_dict['Role'] = row["role"]

方法二:由@Jean fraçois Fabre提供

^{pr2}$

方法三:“优雅的一个班轮”-由@Jean fraçois Fabre

with open('oneOrganization.csv','r') as file:
    reader = csv.DictReader(file,delimiter=',')
    for row in reader:
        row_dict['Role'] = row["role"] or "User"

我在一个csv示例中尝试过,可以这样表示:(np.数组形式)

^{4}$

并使用了以下代码:

import csv

with open('test_csv.csv','r') as file:
    reader = csv.DictReader(file,delimiter=',')
    for row in reader:
        if row['test1'] in (None,''):
            print('no')
        else:
            print(row['test1'])

或使用方法2:

import csv

with open('test_csv.csv','r') as file:
    reader = csv.DictReader(file,delimiter=',')
    for row in reader:
        if not row['test1']:
            print('no')
        else:
            print(row['test1'])

或方法3

import csv

with open('test_csv.csv','r') as file:
    reader = csv.DictReader(file,delimiter=',')
    for row in reader:
        print(row['test1'] or 'no')

输出:

1
11
no

关于如何检查csv文件中的“cell”是否为空,可以参考这个topic。在

相关问题 更多 >