我正在尝试将一些字符串数组的结果写入文件。列表是实际包含数字的字符串,我想将其除以1000.如果我将结果转换保存到变量,我可以将它打印到文件没问题。但是,如果我尝试在一行中执行相同的操作,则会出现以下错误:
TypeError: unsupported operand type(s) for /: 'str' and 'int'
知道发生了什么事吗?这是我的代码的简化版本:
str_list = ['45000', '45500', '50000', '55000']
indx = 2
o = open('Output_file.dat', 'w')
这有效....
x = float(str_list[indx])/1000
o.write('%4.1f\t' % x)
这不是
o.write('%4.1f\t' % float(str_list[indx])/1000)
明显的短期解决方法是使用第一种语法,但我想了解发生了什么以及为什么第二种不起作用。
答案 0 :(得分:4)
您只需在float(str_list[indx])/1000
部分
o.write('%4.1f\t' % (float(str_list[indx])/1000))
否则程序会尝试将字符串除以1000
答案 1 :(得分:1)
首先评估%
:
o.write('%4.1f\t' % float(str_list[indx])/1000)
是(注意括号):
o.write(('%4.1f\t' % float(str_list[indx]))/1000)
你想:
o.write('%4.1f\t' % (float(str_list[indx])/1000))