下面是我的代码,但我得到ValueError
。我的输入来自包含整数的CSV文件,但无法导入它们:
import csv
excel_1 = open(r"C:UsersJP DayaoDesktopPython filestest_file.csv")
raw_1 = csv.reader(excel_1)
t_ijklm = []
for i in raw_1:
for j in i:
t_ijklm.append(int(j))
excel_1.close()
输出(错误):
ValueError Traceback (most recent call last)
Input In [5], in <cell line: 17>()
17 for i in raw_1:
18 for j in i:
---> 19 t_ijklm.append(int(j))
20 excel_1.close()
22 #import constraints data
ValueError: invalid literal for int() with base 10:
CSV文件内容:
21;19;21;19;24;23;35;35;36;35;36;35;35;23;22;30;23;36;23;26;25;25;40;25;40;25;22;21;21;25;20;25;22;22;18;19;25;18;25;17;23;20;24;24;22;24;21;22;23;21;27;22;36;23;25;29;29;23;28;33;29;31;19;26;32;20;35
默认情况下,csv
模块期望该文件为适当的.csv
文件。CSV代表逗号分隔值,因此文件中的值应该用逗号分隔,如
21,19,21,19,24,23,35,35,36,35,36,35,35,23,22,30,23,36,23,26,25,25,40,25,40,25,22,21,21,25,20,25,22,22,18,19,25,18,25,17,23,20,24,24,22,24,21,22,23,21,27,22,36,23,25,29,29,23,28,33,29,31,19,26,32,20,3
错误提示您的数据实际上是用分号分隔的,如:
21;19;21;19;24;23;35;35;36;35;36;35;35;23;22;30;23;36;23;26;25;25;40;25;40;25;22;21;21;25;20;25;22;22;18;19;25;18;25;17;23;20;24;24;22;24;21;22;23;21;27;22;36;23;25;29;29;23;28;33;29;31;19;26;32;20;3
由于没有逗号,因此整行被视为单列。
可以告诉CSV模块使用;作为分隔符(分隔符)而不是逗号。通过将delimiter=";"
传递给csv.reader
方法来实现此目的,如下所示:
import csv
excel_1 = open(r"test_file.csv")
raw_1 = csv.reader(excel_1, delimiter=";")
t_ijklm = []
for i in raw_1:
for j in i:
t_ijklm.append(int(j))
excel_1.close()
顺便说一句,最好使用with
块打开文件:
import csv
with open(r"test_file.csv") as excel_1:
raw_1 = csv.reader(excel_1, delimiter=";")
t_ijklm = []
for i in raw_1:
for j in i:
t_ijklm.append(int(j))
需要在csv文件中添加分隔符。读者的功能。例如:
with open(r"C:UsersJP DayaoDesktopPython filestest_file.csv") as csvfile:
file_reader = csv.reader(csvfile, delimiter=';')
for row in file_reader:
--your code--
希望有帮助!