【发布时间】:2021-03-23 11:33:48
【问题描述】:
这个问题让我发疯了。
我想逐行导入 CSV 文件。
我尝试了以下代码:
import csv
def read_file():
with open ('filepath', 'r') as file:
csv_reader = csv.reader(file, delimiter=';')
data=[]
for rad in csv_reader:
data.append(rad)
read_file()
print(data)
尝试打印数据时,我收到以下错误消息:
/Users/user/PycharmProjects/pythonProject11/venv/bin/python /Users/user/PycharmProjects/pythonProject11/main.py
Traceback (most recent call last):
File "filepath", line 12, in <module>
print(data)
NameError: name 'data' is not defined
Process finished with exit code 1
如果我在 import csv 之后和 def read_file() 之前定义 data=[] ,则代码有效。但是,我需要在函数 read_file 中定义数据。
有什么建议吗?
数据如下:
[['', '2018', '2018', '2015', '2015', '2012', '2012', '2009', '2009', '2006', '2006', '2003', '2003', '2018', '2015', '2012', '2009', '2006', '2003'], ['', 'M', 'F', 'M', 'F', 'M', 'F', 'M', 'F', 'M', 'F', 'M', 'F', 'medel', 'medel', 'medel', 'medel', 'medel', 'medel'], ['Australia', '494', '488', '497', '491', '510', '498', '519', '509', '527', '513', '527', '522', '491', '494', '504', '514', '520', '524'], ['Austria', '505', '492', '510', '483', '517', '494', '506', '486', '517', '494', '509', '502', '499', '497', '506', '496', '505', '506']]
【问题讨论】:
-
return函数中的数据?data只是一个局部变量。你需要把它放到全局范围内。添加一个return data作为函数的最后一行,然后像data = read_file()一样调用它 -
你需要
return data -
顺便说一下,这里不需要循环。它可以是
data = list(csv_reader)... -
@Tomerikoo 成功了。令人惊讶的是我如何忽略它。谢谢你。如果你发布你的答案,我会宣布它有效。
标签: python