长数字转换格式

30 浏览
0 Comments

长数字转换格式

将xml文件转换为csv文件,这是通过一些代码和我添加的规范来完成的。\n结果是得到一个csv文件,一旦我打开它,我看到一些奇怪的数字,看起来像这样\n

1,25151E+21

\n有没有办法消除这个问题并显示完整的数字。代码本身将xml解析为csv工作正常,所以我认为这是Excel的问题。\n我不想每次生成新的csv文件时都手动处理。\n附加信息\n可以在此处找到完整的代码,我只在Quality字段中有长数字\n

for qu in sn.findall('.//Qualify'):
                repeated_values['qualify'] = qu.text

0
0 Comments

科学计数法是一个痛点,我之前处理这种情况的方法是将其转换为float,然后使用格式化字符串的方式,类似这样的代码应该可以工作:

a = "1,25151E+21"
print(f"{float(a.replace(',', '.')):.0f}")
>>> 1251510000000000065536

我已经在代码中添加了链接和引起问题的代码片段。如果您能帮助我在那里实现您的方法,我将不胜感激。

您是否可以看一下代码,并帮助我在代码中实现您的方法 Code

文章标题:长数字转换格式的问题及解决方法

科学计数法是一种表示很大或很小的数字的方法,但在实际应用中经常引发问题。为了解决这个问题,可以考虑将科学计数法转换为整数,并使用特定的格式化字符串进行输出。

下面是一种解决方法的示例代码:

a = "1,25151E+21"
print(f"{float(a.replace(',', '.')):.0f}")
# 输出结果:1251510000000000065536

这段代码首先将字符串中的逗号替换为点号,然后使用`float`函数将其转换为浮点数。接着使用格式化字符串的方式,指定输出为整数,并打印结果。

如果您遇到了类似的问题,并想在您的代码中实现这种方法,可以查看以下链接的代码示例:Code。希望这个方法能对您有所帮助!

0
0 Comments

问题的出现原因是当将csv、fwf等数据导入到数据框中进行ETL(Extract, Transform, Load)处理后,再导出为XLSX格式时,经常会出现长数字被Excel自动转换为科学计数法的问题。对于账户号码等长数字来说,这样的转换会导致严重的数据错误。

解决方法是将长数字转换为字符串类型,可以按照以下步骤操作:

首先,将长数字列强制转换为int64类型的列(前提是由于其他原因,所有数据都以对象类型导入):

# 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)

然后,将int64类型的列转换为字符串类型:

# Then I convert that to a string
df.thatlongnumber.apply(lambda x: '{:d}'.format(x))

以上操作将长数字转换为字符串类型,避免了Excel自动转换为科学计数法的问题。

如果以上方法对您有帮助,请告知我。我已经在代码中添加了您提供的位置信息,如果您愿意,我可以帮助您在那里实施这种方法。谢谢!

0
0 Comments

CSV文件无法将单元格的格式规则传递给Excel。因此,如果打开一个包含非常大的数字的CSV文件,单元格的默认格式很可能是科学计数法。你可以尝试将单元格格式更改为数字格式,如果这样可以将整个数字显示出来,可以考虑在写入Xlsx文件时使用Xlsxwriter来对文档应用单元格格式,而不是使用CSV文件。

然而,有人告诉我要坚持使用CSV文件,我已经对问题进行了进一步补充。

0