首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何避免这段代码出现此错误-TypeError:'NoneType‘对象不可订阅

如何避免这段代码出现此错误-TypeError:'NoneType‘对象不可订阅
EN

Stack Overflow用户
提问于 2018-08-30 23:05:23
回答 2查看 128关注 0票数 0
代码语言:javascript
复制
def open_csv():
    import csv
    with open('//Users//samuel//Desktop//L8 More File Processing (1)//students.csv', 'r') as f:
        reader = csv.reader(f)
        for row in reader:
            print(row)

print(open_csv()[1])

这是open_csv()的输出

代码语言:javascript
复制
['Name', 'Gender', 'Test 1', 'Test 2', 'Test 3', 'Test 4', 'Test 5', 'Test 6']
['Aisha', 'F', '0', '33', '67', '27', '12', '14']
['Alex', 'M', '12', '90', '34', '56', '93', '39']
['Bala', 'M', '13', '25', '58', '17', '49', '29']
['Denise', 'F', '13', '93', '84', '53', '65', '62']
['Farhan', 'M', '15', '5', '10', '62', '34', '11']
['Gopi', 'M', '21', '61', '39', '32', '91', '32']
['Irfan', 'M', '26', '36', '3', '95', '36', '39']
['Jun Ming', 'M', '29', '86', '77', '6', '91', '61']
['Lily', 'F', '30', '34', '46', '96', '100', '44']
['Mei Ling', 'F', '39', '58', '9', '61', '32', '46']
['Muthu', 'M', '39', '60', '13', '69', '55', '100']
['Nurul', 'F', '50', '35', '4', '27', '11', '97']
['Priya', 'F', '50', '25', '47', '15', '35', '86']
['Siti', 'F', '58', '71', '13', '19', '58', '30']
['Elisa', 'F', '59', '22', '73', '52', '77', '49']
['Dennis', 'M', '65', '94', '83', '67', '37', '22']
['Harry', 'M', '74', '75', '76', '82', '57', '1']
['Gary', 'M', '90', '12', '70', '86', '50', '59']
['Terry', 'M', '93', '84', '26', '99', '90', '72']
['Corinne', 'F', '100', '17', '88', '14', '33', '9']

当我运行这段代码时,我得到TypeError:"NoneType“对象是不可订阅的。为什么会这样?我该如何修复它?

EN

回答 2

Stack Overflow用户

发布于 2018-08-30 23:25:15

如果要打印CSV文件中的第二行,可以按如下方式修改函数:

代码语言:javascript
复制
def open_csv():
    import csv
    with open('//Users//samuel//Desktop//L8 More File Processing (1)//students.csv', 'r', newline='') as f:
        return list(csv.reader(f))

print(open_csv()[1])

这将以行列表的形式返回所有数据,通过添加[1],您将显示第二行(其中[0]是第一行)。出现该错误的原因是您的代码在函数中没有return语句。默认情况下,Python返回None。所以实际上你的代码做的是:

代码语言:javascript
复制
print(None[0])

在将newline=''用于csv.reader()时,不要忘记添加它

票数 3
EN

Stack Overflow用户

发布于 2018-08-30 23:11:44

将此函数转换为生成器。

代码语言:javascript
复制
    def open_csv():
        ...
        for row in reader:
            print(row) // change this to yield(row)

    list(open_csv())[0]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52100228

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档