这里是我的代码:的Python:ValueError异常:无法将字符串转换为float: '4623634 0'
import csv
with open ("Filename1.txt") as f:
dict1 = {}
r = csv.reader(f,delimiter="\t")
for row in r:
a, b, v = row
dict1.setdefault((a,b),[]).append(v)
#for key in dict1:
#print(key[0])
#print(key[1])
#print(d[key][0]])
with open ("Filename2.txt") as f:
dict2 = {}
r = csv.reader(f,delimiter="\t")
for row in r:
a, b, v = row
dict2.setdefault((a,b),[]).append(v)
#for key in dict2:
#print(key[0])
count = 0
for key1 in dict1:
for key2 in dict2:
if (key1[0] == key2[0]) and abs(float(key1[1])) - (float(key2[1])) < 10000:
count += 1
以前我收到此错误:
Traceback (most recent call last):
File "/Users/macbookpro/Desktop/MainDict.py", line 28, in <module>
if key1[0] == key2[0] and abs(key1[1] - key2[1]) < 10000:
TypeError: unsupported operand type(s) for -: 'str' and 'str'
所以当然我试图转向这些字符串转换为整数。不过我当时得到这个错误:
Traceback (most recent call last):
File "/Users/macbookpro/Desktop/MainDict.py", line 28, in <module>
if (key1[0] == key2[0]) and abs((int(key1[1])) - (int(key2[1]))) < 10000:
ValueError: invalid literal for int() with base 10: '1002569 1'
然后我试图使用浮动,现在我得到这个错误,这就是我现在坚持:
Traceback (most recent call last):
File "/Users/macbookpro/Desktop/MainDict.py", line 28, in <module>
if (key1[0] == key2[0]) and abs(float(key1[1])) - (float(key2[1])) < 10000:
ValueError: could not convert string to float: '2486997 2'
这里是我的输入文件由什么例子的:
FILENAME1
1 11383002 8 1.16E-05
1 159962368 1.17E-05
2 133623587 1.26E-05
2 1002569 1 3.30E-06
3 168940139 1.40E-05
3 49736942 1.43E-05
文件名2
10 11383002 8 1.16E-05
5 159962368 1.17E-05
7 133623587 1.26E-05
9 1002569 1 3.30E-06
8 168940139 1.40E-05
1 49736942 1.43E-05
现在我的问题是,为什么我得到这个错误。代码中是否有特定的内容?或者我的文本文件有问题。你有什么建议来解决这个问题,我该如何改变我的代码(如果是这样的话)?
你认为“1002569 1”应该是多少? – BrenBarn
'1002569 1'不是有效的浮点数或整数,实际上它不是一个有效的数字,因为它包含空格!所以你想要它是什么? – Kasramvd
谢谢@Kasramvd –