2016-05-23 26 views
1

我在尝试从字符串数组中写入一些结果到文件中。该列表是实际包含数字的字符串,我希望将其除以1000.如果将结果转换保存到变量中,我可以将它打印到文件中没有任何问题。但是,如果我尝试在同一行中做同样的事情,我会得到以下错误:从Python打印时发生Str/Int类型错误

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) 

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

回答

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)) 
+0

AHHHH,这是有道理的。谢谢! – Helos35

4

您只需涂在float(str_list[indx])/1000部分支架

o.write('%4.1f\t' % (float(str_list[indx])/1000)) 

否则,程序将尝试通过1000