Python浮动列表以';结尾:';转换为字符串时
我有一个从文本文件读取的浮动列表。经过一些数据处理后,我使用以下命令将列表写入文件:Python浮动列表以';结尾:';转换为字符串时,python,list,colon,Python,List,Colon,我有一个从文本文件读取的浮动列表。经过一些数据处理后,我使用以下命令将列表写入文件: for val in flist: sa = '{0}'.format(val) fout.write(sa) 对于特定的输入文件,输出文件的字符串中将包含“:”。 我已经运行了debug并在脚本出现故障时停止了它。该值应为58710000.0 [Dbg]>>> print val[464] 5870:000.0 [Dbg]>>> fa = val[4
for val in flist:
sa = '{0}'.format(val)
fout.write(sa)
对于特定的输入文件,输出文件的字符串中将包含“:”。
我已经运行了debug并在脚本出现故障时停止了它。该值应为58710000.0
[Dbg]>>> print val[464]
5870:000.0
[Dbg]>>> fa = val[464]
[Dbg]>>> print fa
5870:000.0
[Dbg]>>>
[Dbg]>>> fa = fa + 1
[Dbg]>>> print fa
58710001.0
[Dbg]>>> fa = fa - 1
[Dbg]>>> print fa
5870:000.0
这仅适用于某些文件和浮动
有什么建议吗?您的值实际上可能不是
float
s。无论如何,sa='{0}'。格式(val)
是愚蠢的;您不妨只做sa=str(val)
。但是如果您改为sa='%f%%(val,)
,当val不是float
时,您将得到一个异常,这是Python2.7.3或更早版本的特定环境中的一个bug
User@ecatmur在另一篇帖子中指出了一个类似的问题,即ASCII中的'9'+1=':'
这已在Python的更高版本中修复。具体来说,这个问题在Python 2.7.5中消失了,因此问题已经得到了解决 参见Gord Thompson关于以下内容的公认答案:
相关源文件:PyOS_snprintf的Python/mysnprintf.c,float_repr的Objects/floatobject.c,PyOS_string_to_double的Python/pystrtod.c 帮我一个忙,把打印报告(val[464])的输出给我。你能把
flist
和val[-10:]
贴在这里吗?还有。。。它似乎是特定于平台的。您仍然可以使用较新的字符串格式,只需执行sa='{0:f}'。format(val)
将很好地引用Python更改,它确实修复了一些问题。AFAICT这是一个C库错误,不是CPython内部的。