Python浮动列表在转换为字符串时以“:”结尾

2024-06-17 12:34:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个从文本文件中读入的浮动列表。经过一些数据处理后,我使用以下方法将列表写入文件:

for val in flist:
    sa = '{0}'.format(val)
    fout.write(sa)

对于特定的输入文件,输出文件的字符串中将有一个“:”。 我已经运行了调试并在失败点停止了脚本。该值应为58710000.0

^{pr2}$

只有某些文件和浮动才会发生这种情况

有什么建议吗?在


Tags: 文件方法字符串informat列表forsa
3条回答

您的值可能实际上不是floats。无论如何,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。在

相关问题 更多 >