长数转换格式
Posted
技术标签:
【中文标题】长数转换格式【英文标题】:Long numbers conversion format 【发布时间】:2020-01-15 16:00:09 【问题描述】:xml 到 csv 文件的转换,这是通过一些代码和我添加的规范来完成的。
结果我得到一个 csv 文件,一旦我打开它,我会看到一些奇怪的数字,看起来像这样
1,25151E+21
有什么办法可以消除这种情况并显示整数。将 xml 解析为 csv 的代码本身运行良好,所以我假设它是一个 excel 的东西。
我不想每次生成新的 csv 文件时都手动做某事
附加 整个代码可以在HERE 找到,我的质量只有长数字
for qu in sn.findall('.//Qualify'):
repeated_values['qualify'] = qu.text
【问题讨论】:
当您说“我添加的一些代码和规范”时,您的意思是这是 Excel 电子表格中的 VBA 代码和从 Excel 导出的 CSV?或者是 Python 代码,生成的 CSV 包含所有 22 位数字,但是当您将其加载到 Excel 中时,您会看到“E”格式的数字?而且您不知道如何让 Excel 显示所有数字(数字格式选项?) - 或者您知道,但不想为每个 CSV 手动执行? (即您需要导出 CSV 以外的其他内容) 如果您将comma
替换为period
,您可以将其传递给int()
,Python 会处理得很好。像int(1.25151E+21)
这样的东西会导致1251510000000000065536
。
如何打开 CSV?您是否在 Excel 或文本编辑器中看到这些“奇怪的数字”?
请提供导致问题的实际 csv 文件的前几行的 sn-p。
这能回答你的问题吗? Converting number in scientific notation to int
【参考方案1】:
CSV 不会将任何单元格格式规则传递给 Excel。因此,如果您打开一个包含非常大数字的 CSV,则默认单元格格式可能是 Scientific
。您可以尝试将单元格格式更改为 Number
,如果这会将视图更改为您想要的整个数字,请考虑在写入 Xlsx 而不是 CSV 时使用 Xlsxwriter
将单元格格式应用于文档。
【讨论】:
我在问题中添加了更多内容。我真的不想使用 xlsx 文件,有人告诉我要坚持使用 csv 文件【参考方案2】:当我为 ETL 引入 csv、fwf 等并返回到 XLSX 时,我经常会在数据帧上运行 lambda。在我的情况下,它们都是帐号,所以当 Excel 将其覆盖为科学记数法时,这非常糟糕。
如果你不介意长数字是一个字符串,你可以这样做:
# First I force it to be an int column as I import everything as objects for unrelated reasons
df.thatlongnumber = df.thatlongnumber.astype(np.int64)
# Then I convert that to a string
df.thatlongnumber.apply(lambda x: ':d'.format(x))
让我知道这是否有用。
【讨论】:
我已将位置添加到我获得代码的位置,如果您能帮助我在那里实施您的方法,那将意义重大。谢谢【参考方案3】:科学记数法很痛苦,我以前用来处理这种情况的方法是将其转换为float
,然后使用格式说明符,这样的东西应该可以工作:
a = "1,25151E+21"
print(f"float(a.replace(',', '.')):.0f")
>>> 1251510000000000065536
【讨论】:
我已将链接添加到代码和导致问题的 sn-p。如果您能帮助我在那里实施您的方法,将不胜感激 你能看一下代码并帮助我实现你对代码的方法Code以上是关于长数转换格式的主要内容,如果未能解决你的问题,请参考以下文章