ValueError: invalid literal for int() with base 10: ':'
ValueError: invalid literal for int() with base 10: ':'
我正在使用 jupyter python 3. 我尝试从 .tsp 文件导入数据,但它一直显示这个 error.And 我看到有些人有同样的问题,他们解决了这个问题,感谢转换,但它不适用于我的代码。
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:\Users136\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: ':'
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
的两行名称后没有紧跟 :
,但中间有一些额外的 space,因此 split()
将在每个 space 处将这些行拆分为三个部分,例如:
['DIMENSION', ':', '52']
您选择的是第二部分,不能解释为int
。您希望在按 :
拆分行后始终拥有行的第二部分,而不是 </code>,<code>split(':')
为您做的,例如:
['DIMENSION ', ' 52']
多余的白色space可以通过在这些行之后调用.strip()
来删除,但是int
也可以在没有调用的情况下接受它。
Dimension = infile.readline().split(':')[1].strip()
这仍然会削减包含额外 :
的字段,但我想这种特殊情况在这里对您来说并不那么重要。
我正在使用 jupyter python 3. 我尝试从 .tsp 文件导入数据,但它一直显示这个 error.And 我看到有些人有同样的问题,他们解决了这个问题,感谢转换,但它不适用于我的代码。
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:\Users136\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: ':'
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
的两行名称后没有紧跟 :
,但中间有一些额外的 space,因此 split()
将在每个 space 处将这些行拆分为三个部分,例如:
['DIMENSION', ':', '52']
您选择的是第二部分,不能解释为int
。您希望在按 :
拆分行后始终拥有行的第二部分,而不是 </code>,<code>split(':')
为您做的,例如:
['DIMENSION ', ' 52']
多余的白色space可以通过在这些行之后调用.strip()
来删除,但是int
也可以在没有调用的情况下接受它。
Dimension = infile.readline().split(':')[1].strip()
这仍然会削减包含额外 :
的字段,但我想这种特殊情况在这里对您来说并不那么重要。