我正在使用jupyter python3。我试图从.tsp文件导入数据,但是它一直向我显示此错误。我看到有些人遇到了同样的问题,由于转换,他们解决了该问题,但是在我的密码
NAME: berlin52
TYPE: TSP
COMMENT: 52 locations in Berlin (Groetschel)
DIMENSION : 52
EDGE_WEIGHT_TYPE : EUC_2D
NODE_COORD_SECTION
1 565.0 575.0
2 25.0 185.0
3 345.0 750.0
4 945.0 685.0
5 845.0 655.0
6 880.0 660.0
7 25.0 230.0
8 525.0 1000.0
9 580.0 1175.0
10 650.0 1130.0
# Open input file
infile = open(r'C:\Users\13136\OneDrive\Desktop\AI\berlin52.tsp')
# Read instance header
Name = infile.readline().strip().split()[1] # NAME
FileType = infile.readline().strip().split()[1] # TYPE
Comment = infile.readline().strip().split()[1] # COMMENT
Dimension = infile.readline().strip().split()[1] # DIMENSION
EdgeWeightType = infile.readline().strip().split()[1] # EDGE_WEIGHT_TYPE
infile.readline()
# Read node list
nodelist = []
N = int(Dimension)
for i in range(0, int(Dimension)):
x,y = infile.readline().strip().split()[1:]
nodelist.append([float(x), float(y)])
# Close input file
infile.close()
ValueError Traceback (most recent call last)
<ipython-input-22-5e3fe725955a> in <module>
12 # Read node list
13 nodelist = []
---> 14 N = int(Dimension)
15 for i in range(0, int(Dimension)):
16 x,y = infile.readline().strip().split()[1:]
ValueError: invalid literal for int() with base 10: ':'
答案 0 :(得分:1)
Name = infile.readline().strip().split(':')[1] # NAME
FileType = infile.readline().strip().split(':')[1] # TYPE
Comment = infile.readline().strip().split(':')[1] # COMMENT
Dimension = infile.readline().strip().split(':')[1] # DIMENSION
EdgeWeightType = infile.readline().strip().split(':')[1] # EDGE_WEIGHT_TYPE
文件DIMENSION
和EDGE_WEIGHT_TYPE
的两行名称后没有紧跟:
,但它们之间还有一些额外的空间,因此split()
将被拆分这些线在每个空间分为三个部分,例如:
['DIMENSION', ':', '52']
您正在选择第二部分,该部分不能解释为int
。您希望在用:
而不是为您完成的行{,
split(':')
拆分行之后始终保留行的第二部分,例如:
['DIMENSION ', ' 52']
可以在这些行之后通过.strip()
调用来删除多余的空格,但是int
也可以不使用它。
Dimension = infile.readline().split(':')[1].strip()
这仍然会切掉包含额外的:
的字段,但是我想这种特殊情况在这里对您来说并不那么重要。