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()的输出
['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“对象是不可订阅的。为什么会这样?我该如何修复它?
发布于 2018-08-30 23:25:15
如果要打印CSV文件中的第二行,可以按如下方式修改函数:
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。所以实际上你的代码做的是:
print(None[0])在将newline=''用于csv.reader()时,不要忘记添加它
发布于 2018-08-30 23:11:44
将此函数转换为生成器。
def open_csv():
...
for row in reader:
print(row) // change this to yield(row)
list(open_csv())[0]https://stackoverflow.com/questions/52100228
复制相似问题