从Python

时间:2016-05-23 19:30:52

标签: python

我正在尝试将一些字符串数组的结果写入文件。列表是实际包含数字的字符串,我想将其除以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)

明显的短期解决方法是使用第一种语法,但我想了解发生了什么以及为什么第二种不起作用。

2 个答案:

答案 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))