长数转换格式

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

以上是关于长数转换格式的主要内容,如果未能解决你的问题,请参考以下文章

将大科学数转换为长数

如何将任何数字转换为长数

php时间格式怎么转换?

用视频转换器转换格式,怎么把内存变小?

有啥转换器可以将QMCFLAC格式转成MP3格式

DAT 文件格式怎么转换?