2024-06-17 12:34:34 发布
网友
我有一个从文本文件中读入的浮动列表。经过一些数据处理后,我使用以下方法将列表写入文件:
for val in flist: sa = '{0}'.format(val) fout.write(sa)
对于特定的输入文件,输出文件的字符串中将有一个“:”。 我已经运行了调试并在失败点停止了脚本。该值应为58710000.0
只有某些文件和浮动才会发生这种情况
有什么建议吗?在
您的值可能实际上不是floats。无论如何,sa = '{0}'.format(val)是愚蠢的;您最好还是sa = str(val)。但是如果您改为sa = '%f' % (val,),当val不是float时,您将得到一个异常。在
float
sa = '{0}'.format(val)
sa = str(val)
sa = '%f' % (val,)
这是Python2.7.3或更早版本中的一个bug,适用于某些环境。在
User@ecatmur在另一篇文章中指出了一个类似的问题,即ASCII中的'9' + 1 = ':'
'9' + 1 = ':'
在Python的更高版本中, 具体地说,这个问题在python2.7.5中消失了,所以这个问题已经被修复了。在
参见戈德·汤普森接受的答案:
类似的问题已结束或未得到回答:
这似乎是高度特定于平台的。float的repr调用PyOS_double_to_字符串,最后调用PyOS_snprintf,它用一些代码包装snprintf,使该函数在不同平台上更加一致。在某些版本的AIX上,snprintf可以生成0:而不是10。在
你能分享一下你的吗系统平台以及系统版本价值观?(启动交互式python解释器时打印的版本头应该是这样的。)
相关源文件:PyOS_snprintf的Python/mysnprintf.c,float_repr的Objects/floatobject.c,PyOS\u string_to_double的Python/pystrtod.c。在
您的值可能实际上不是
float
s。无论如何,sa = '{0}'.format(val)
是愚蠢的;您最好还是sa = str(val)
。但是如果您改为sa = '%f' % (val,)
,当val不是float
时,您将得到一个异常。在这是Python2.7.3或更早版本中的一个bug,适用于某些环境。在
User@ecatmur在另一篇文章中指出了一个类似的问题,即ASCII中的
'9' + 1 = ':'
在Python的更高版本中,
具体地说,这个问题在python2.7.5中消失了,所以这个问题已经被修复了。在
参见戈德·汤普森接受的答案:
类似的问题已结束或未得到回答:
这似乎是高度特定于平台的。float的repr调用PyOS_double_to_字符串,最后调用PyOS_snprintf,它用一些代码包装snprintf,使该函数在不同平台上更加一致。在某些版本的AIX上,snprintf可以生成0:而不是10。在
你能分享一下你的吗系统平台以及系统版本价值观?(启动交互式python解释器时打印的版本头应该是这样的。)
相关源文件:PyOS_snprintf的Python/mysnprintf.c,float_repr的Objects/floatobject.c,PyOS\u string_to_double的Python/pystrtod.c。在
相关问题 更多 >
编程相关推荐