我正在编写一个程序来打开并读取一个txt文件并遍历每一行的循环。将第2列和第4列中的值相乘,并将其分配给第5列。
A 500.00 A 84.15 ?
B 648.80 B 77.61 ?
C 342.23 B 39.00 ?
这是我写的代码的一部分,
for line in infile:
a,b,c,d = line.split()
e = eval(b) + eval(d)
print("{0:20}${1:20}{2:20}${3:20}{4:20}".format(a,b,c,d,e),file=outfile)
我一直在说错误,
文件“C:/ Users / hee lim / Desktop / readfile2.py”,第19行,在main中 e = eval(b)+ eval(d) TypeError:只能将元组(不是“float”)连接到元组
我使用“eval”将字符串转换为数字以乘以这些数字。 我不明白为什么它会标记错误。
谢谢你的帮助。
答案 0 :(得分:2)
查看此信息,我只能告诉eval
b
和d
float
返回的值为tuple
和+
类型。而且您无法float
和tuple
>>> 5.0 + (2 ,3)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'float' and 'tuple'
。例如:
print line
要进行调试,请在for
循环开始时添加<bean id="sftpSessionFactory"
class="org.springframework.integration.sftp.session.DefaultSftpSessionFactory">
<property name="host" value="localhost"/>
</bean>
<bean id="cachingSessionFactory"
class="org.springframework.integration.file.remote.session.CachingSessionFactory">
<constructor-arg ref="sftpSessionFactory"/>
<constructor-arg value="10"/>
<property name="sessionWaitTimeout" value="1000"/>
</bean>
以查看它引发错误的值。
答案 1 :(得分:0)
对于我来说,出现此错误是因为我错误地删除了for循环中试图枚举的索引。
之前(无错误)
for i, item in enumerate(items):
之后(错误)
for item in enumerate(items):