如何防止 csv.DictWriter() 或 writerow() 四舍五入我的浮动?

2023-11-26

我有一本字典想要写入 csv 文件,但是当我将字典中的浮点数写入文件时,它们会被四舍五入。我想保持最大精度。

舍入发生在哪里以及如何防止它发生?

我做了什么

我跟着DictWriter 示例在这里我正在 Mac 上运行 Python 2.6.1(10.6 - Snow Leopard)。


# my import statements
import sys
import csv

这是我的字典 (d) 包含的内容:

>>> d = runtime.__dict__
>>> d
{'time_final': 1323494016.8556759,
'time_init': 1323493818.0042379,
'time_lapsed': 198.85143804550171}

这些值确实是浮点数:

>>> type(runtime.time_init)
<type 'float'>

然后我设置我的编写器并写入标题和值:

f = open(log_filename,'w')
fieldnames = ('time_init', 'time_final', 'time_lapsed')
myWriter = csv.DictWriter(f, fieldnames=fieldnames)
headers = dict( (n,n) for n in fieldnames )
myWriter.writerow(headers)
myWriter.writerow(d)
f.close()

但是当我查看输出文件时,我得到四舍五入的数字(即浮点数):

time_init,time_final,time_lapsed
1323493818.0,1323494016.86,198.851438046


看起来像csv正在使用浮动.__str__而不是浮动.__repr__:

>>> print repr(1323494016.855676)
1323494016.855676
>>> print str(1323494016.855676)
1323494016.86

看着csv源,这似乎是一种硬连线行为。解决方法是在 csv 到达之前将所有浮点值转换为它们的 repr。使用类似的东西:d = dict((k, repr(v)) for k, v in d.items()).

这是一个已完成的示例:

import sys, csv

d = {'time_final': 1323494016.8556759,
     'time_init': 1323493818.0042379,
     'time_lapsed': 198.85143804550171
}

d = dict((k, repr(v)) for k, v in d.items())

fieldnames = ('time_init', 'time_final', 'time_lapsed')
myWriter = csv.DictWriter(sys.stdout, fieldnames=fieldnames)
headers = dict( (n,n) for n in fieldnames )
myWriter.writerow(headers)
myWriter.writerow(d)

此代码产生以下输出:

time_init,time_final,time_lapsed
1323493818.0042379,1323494016.8556759,198.85143804550171

更精致的方法将注意只替换浮动:

d = dict((k, (repr(v) if isinstance(v, float) else str(v))) for k, v in d.items())

请注意,我刚刚为 Py2.7.3 修复了这个问题,所以将来它应该不会成为问题。看http://hg.python.org/cpython/rev/bf7329190ca6

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何防止 csv.DictWriter() 或 writerow() 四舍五入我的浮动? 的相关文章

  • Django REST序列化器:创建对象而不保存

    我已经开始使用 Django REST 框架 我想做的是使用一些 JSON 发布请求 从中创建一个 Django 模型对象 然后使用该对象而不保存它 我的 Django 模型称为 SearchRequest 我所拥有的是 api view
  • Python PAM 模块的安全问题?

    我有兴趣编写一个 PAM 模块 该模块将利用流行的 Unix 登录身份验证机制 我过去的大部分编程经验都是使用 Python 进行的 并且我正在交互的系统已经有一个 Python API 我用谷歌搜索发现pam python http pa
  • 如何使用固定的 pandas 数据框进行动态 matplotlib 绘图?

    我有一个名为的数据框benchmark returns and strategy returns 两者具有相同的时间跨度 我想找到一种方法以漂亮的动画风格绘制数据点 以便它显示逐渐加载的所有点 我知道有一个matplotlib animat
  • DreamPie 不适用于 Python 3.2

    我最喜欢的 Python shell 是DreamPie http dreampie sourceforge net 我想将它与 Python 3 2 一起使用 我使用了 添加解释器 DreamPie 应用程序并添加了 Python 3 2
  • Python 多处理示例不起作用

    我正在尝试学习如何使用multiprocessing但我无法让它发挥作用 这是代码文档 http docs python org 2 library multiprocessing html from multiprocessing imp
  • 如何使用包含代码的“asyncio.sleep()”进行单元测试?

    我在编写 asyncio sleep 包含的单元测试时遇到问题 我要等待实际的睡眠时间吗 I used freezegun到嘲笑时间 当我尝试使用普通可调用对象运行测试时 这个库非常有用 但我找不到运行包含 asyncio sleep 的测
  • 如何使用 Scrapy 从网站获取所有纯文本?

    我希望在 HTML 呈现后 可以从网站上看到所有文本 我正在使用 Scrapy 框架使用 Python 工作 和xpath body text 我能够获取它 但是带有 HTML 标签 而且我只想要文本 有什么解决办法吗 最简单的选择是ext
  • 打破嵌套循环[重复]

    这个问题在这里已经有答案了 有没有比抛出异常更简单的方法来打破嵌套循环 在Perl https en wikipedia org wiki Perl 您可以为每个循环指定标签 并且至少继续一个外循环 for x in range 10 fo
  • 为 pandas 数据透视表中的每个值列定义 aggfunc

    试图生成具有多个 值 列的数据透视表 我知道我可以使用 aggfunc 按照我想要的方式聚合值 但是如果我不想对两列求和或求平均值 而是想要一列的总和 同时求另一列的平均值 该怎么办 那么使用 pandas 可以做到这一点吗 df pd D
  • 从列表中的数据框列中搜索部分字符串匹配 - Pandas - Python

    我有一个清单 things A1 B2 C3 我有一个 pandas 数据框 其中有一列包含用分号分隔的值 某些行将包含与上面列表中的一项的匹配 它不会是完美的匹配 因为它在其中包含字符串的其他部分 该列 例如 该列中的一行可能有 哇 这里
  • IRichBolt 在storm-1.0.0 和 pyleus-0.3.0 上运行拓扑时出错

    我正在运行风暴拓扑 pyleus verbose local xyz topology jar using storm 1 0 0 pyleus 0 3 0 centos 6 6并得到错误 线程 main java lang NoClass
  • Abaqus 将曲面转化为集合

    我一直试图在模型中找到两个表面的中心 参见照片 但未能成功 它们是元素表面 面 查询中没有选项可以查找元素表面的中心 只能查找元素集的中心 找到节点集的中心也很好 但是我的节点集没有出现在工具 gt 查询 gt 质量属性选项中 而且我找不到
  • python 集合可以包含的值的数量是否有限制?

    我正在尝试使用 python 设置作为 mysql 表中 ids 的过滤器 python集存储了所有要过滤的id 现在大约有30000个 这个数字会随着时间的推移慢慢增长 我担心python集的最大容量 它可以包含的元素数量有限制吗 您最大
  • Geopandas 设置几何图形:MultiPolygon“等于 len 键和值”的 ValueError

    我有 2 个带有几何列的地理数据框 我将一些几何图形从 1 个复制到另一个 这对于多边形效果很好 但对于任何 有效 多多边形都会返回 ValueError 请指教如何解决这个问题 我不知道是否 如何 为什么应该更改 MultiPolygon
  • 循环中断打破tqdm

    下面的简单代码使用tqdm https github com tqdm tqdm在循环迭代时显示进度条 import tqdm for f in tqdm tqdm range 100000000 if f gt 100000000 4 b
  • 如何将 PIL 图像转换为 NumPy 数组?

    如何转换 PILImage来回转换为 NumPy 数组 这样我就可以比 PIL 进行更快的像素级转换PixelAccess允许 我可以通过以下方式将其转换为 NumPy 数组 pic Image open foo jpg pix numpy
  • 设置 torch.gather(...) 调用的结果

    我有一个形状为 n x m 的 2D pytorch 张量 我想使用索引列表来索引第二个维度 可以使用 torch gather 完成 然后然后还设置新值到索引的结果 Example data torch tensor 0 1 2 3 4
  • VSCode:调试配置中的 Python 路径无效

    对 Python 和 VSCode 以及 stackoverflow 非常陌生 直到最近 我已经使用了大约 3 个月 一切都很好 当尝试在调试器中运行任何基本的 Python 程序时 弹出窗口The Python path in your
  • 用于运行可执行文件的python多线程进程

    我正在尝试将一个在 Windows 上运行可执行文件并管理文本输出文件的 python 脚本升级到使用多线程进程的版本 以便我可以利用多个核心 我有四个独立版本的可执行文件 每个线程都知道要访问它们 这部分工作正常 我遇到问题的地方是当它们
  • 协方差矩阵的对角元素不是 1 pandas/numpy

    我有以下数据框 A B 0 1 5 1 2 6 2 3 7 3 4 8 我想计算协方差 a df iloc 0 values b df iloc 1 values 使用 numpy 作为 cov numpy cov a b I get ar

随机推荐

  • 如何获取以毫秒为单位的时间差

    我无法解决这个问题 所以我希望有人能提供帮助 我有一首歌曲 歌曲长度以毫秒为单位 我还有以 DATETIME 格式播放歌曲的日期 我想做的是找出歌曲播放时间还剩多少毫秒 Example tracktime 219238 dateplayed
  • requiredFieldValidator 要求用户单击两次

    我有一个简单的网络表单 其中有一个文本框和一个连接到它的RequiredFieldValidator 当触发RequiredFieldValidator错误时 用户必须单击提交两次才能发布表单 第一次单击会清除错误 第二次单击实际上会触发按
  • Java 3 颜色渐变

    我有一个JPanel 我想在其中绘制渐变 我有下面的代码 但只绘制了 2 种颜色的渐变 我想添加第三个 但不知道如何 我想要的是将面板的左上角设置为白色 右上角设置为红色 两个底角设置为黑色 为了实现这一目标 我必须做什么 看起来像这样 p
  • OpenCV Java 将 VideoCapture 与失败的文件绑定

    我使用 OpenCV 2 4 8 和提供的 Windows 64 位 Java jar 到目前为止 我一直在当前环境中充分利用 OpenCV 我无法使用打开视频文件VideoCapture类但是网络摄像头工作正常 以下内容按预期工作vide
  • 从 SASS/LESS 文件中重构和删除未使用的 CSS

    我正在做一个大的工作单页应用程序 backbonejs和rails 它使用 LESS 作为 CSS 预处理器 并且生成的 css 文件已经增长到这样的程度 对于 IE 我们必须将其分成 3 个文件http blesscss com 尽管有工
  • Spring webflux:将http重定向到https

    如何在 spring webflux 中配置 http gt https 重定向 我需要全部http请求被重定向到https 据我了解任何http请求应该有301http 状态响应更改为 http gt https 没有找到任何相关信息文档
  • 需要更快的方法来获取缓冲图像的每个像素的 RGB 值

    获取每个像素的RGB值的最快方法是什么BufferedImage 现在我使用两个来获取 RGB 值for循环如下面的代码所示 但获取这些值花费的时间太长 因为嵌套循环对我的图像总共运行了 479999 次 如果我使用 16 位图像 这个数字
  • 对 HTML 文档进行分页以便使用基于 WebKit 的浏览器进行打印

    Internet Explorer 有打印模板 engine 我可以在哪里使用DEVICERECT元素来表示物理页面 然后使用LAYOUTRECT元素作为矩形视图 使 HTML 文档流入页面并驱动分页 这可以防止行在相邻页面之间的中间被切断
  • 免费、便宜或开源的 UML 和类似 Visio 的工具 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我们正在寻找免费 廉价或开
  • 在 PHP 中将 unix 时间戳转换为人类可读的日期?

    我有来自 PHP 的时间戳值 1188604800000 当我将时间格式化为人类可读的格式时 如下所示 date m d Y 1188604800000 它打印 05 21 39635 如果我将数字放入在线 Unix 时间戳转换器中 我会得
  • 两个(UIWebView 或 WKWebView)单独的 cookie 存储

    我想在不同的地方登录同一网站的多个帐户webView 例如我有Tab Bar Controller其中包含三个视图控制器和每个视图控制器包含webView 例如我嵌入stackoverflow网址为webView在每个班级 用户如何使用这三
  • 调用 platformBrowserDynamic().bootstrapModule(@NgModule) 返回 ASSERTION ERROR 传入的类型不是 NgModuleType,它没有 'ɵmod' 属性

    我对 platformBrowserDynamic bootstrapModule app app module 调用有问题 错误消息是 未捕获错误 断言错误 传入的类型不是 NgModuleType 它没有 mod 属性 但是我可以在调试
  • 如何将两个CSS类应用到单个元素[重复]

    这个问题在这里已经有答案了 我可以在一个课程中申请2个课程吗div or span或任何 HTML 元素 例如 a class c2 aa a 我尝试过 就我而言c2没有得到应用 我怎样才能同时申请两个课程 1 在class属性内使用多个类
  • 在 python 中创建圆形条形图

    我有兴趣在我的项目中使用圆形条形图可视化 但不知道如何用 Python 生成它 请参阅下面的 圆形条形图 含义的示例 数据将以 pandas 系列的形式出现 下面的虚拟示例模糊地反映了情节 A 33 B 62 C 56 D 70 任何想法
  • Datadog Grok 解析 - 从嵌套 JSON 中提取字段

    是否可以提取嵌套在日志中的 json 字段 我一直在研究的示例 thread 191555 app main cid 2cacd6f9 546d 41ew a7ce d5d41b39eb8f uid e6ffc3b0 2f39 44f7 8
  • 如何获取已连接 WiFi android 的信号强度?

    我想获取与我的设备连接的 wifi 的信号强度 这可能很容易 但我是初学者 这是作业 如何获得 我尝试了这段代码 但这不起作用 registerReceiver new BroadcastReceiver Override public v
  • 将多个项目发布到Azure网站上的不同位置

    请随意推荐一个更好的标题或更改我下面的解释 我正在使用 Windows Azure 网站 第一次 并将其连接到 Visual Studio Online 中的解决方案 也是我第一次 我还能够连接到 Visual Studio Online
  • 如何使用 django-storages 生成预签名的 S3 url?

    我有一个 Django 表单 它通过 django storages 库将文件保存到 s3 并且工作正常 如何生成并返回预签名 URL 以便用户可以在文件上传后临时访问该文件 这是由 django storages 抽象的还是我必须使用 b
  • Node.js 中的声明 var 是什么?

    在这段nodejs代码中 declare var process NodeJS Process declare var global NodeJS Global declare var console Console declare var
  • 如何防止 csv.DictWriter() 或 writerow() 四舍五入我的浮动?

    我有一本字典想要写入 csv 文件 但是当我将字典中的浮点数写入文件时 它们会被四舍五入 我想保持最大精度 舍入发生在哪里以及如何防止它发生 我做了什么 我跟着DictWriter 示例在这里我正在 Mac 上运行 Python 2 6 1