ValueError:以10为基数读取CSV的int()无效字面值



下面是我的代码,但我得到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--

希望有帮助!

最新更新