在 Notepad++ 中使用正则表达式将科学记数法转换为文本或整数

Posted

技术标签:

【中文标题】在 Notepad++ 中使用正则表达式将科学记数法转换为文本或整数【英文标题】:Convert Scientific notation to text or integer using regex in Notepad++ 【发布时间】:2012-12-05 15:47:35 【问题描述】:

我希望将科学计数法数字转换为完整的整数。

例如:

8.18234E+11 => 818234011668

Excel 在 csv 中重新格式化了我所有的 upc 代码,this 解决方案对我不起作用。

我在 Notepad++ 中打开了我的 csv,并希望使用正则表达式查找和替换来完成此操作。

谢谢。

【问题讨论】:

正则表达式应该从哪里得到011668?注意有信息丢失。 @JanDvorak 不确定,excel 如何在两者之间转换? 您是否可以访问 csv 或 excel 脚本?因为在这种情况下,您可以考虑更改其中的内容并将其视为字符而不是数字 @corsibu 是的,我在 excel 中打开了原始 csv,但是,如果我将列格式化为文本,它仍然显示为 sci notation? @shnozolla 在 excel 中看到了什么值?圆角的还是正确的? 【参考方案1】:

损坏已经造成,无法从 CSV 文件中恢复。 8.18234E+11 可以是从 818233500000818234499999 的任何东西*。

为防止 Excel 舍入大数字,您需要将它们存储为文本。如果将单元格格式设置为文本,则此后插入的任何值都应自动解释为文本。在 OpenOffice Calc(我没有 MS Excel)中,您还可以在数值前加上 ' 前缀,以将其解释为文本,无论单元格格式如何。

正确的值有可能存储在原始 XLS(或 XSLX 或 ODS 或实时 Excel 会话或...)文件中。如果没有,那么您将不得不再次输入数据。如果数据在那里,您需要将其存储为文本或增加导出的 CSV 中的有效位数。如果您只有导出的数据,那么您就不走运了。

*UPC 有一个校验位,因此 1 000 000 个代码中只有 100 000 个实际上是有效的 UPC 代码。

【讨论】:

好的,谢谢 Jan,效果很好。一旦列格式更改为“文本”,我必须添加数据。我永远不会猜到。

以上是关于在 Notepad++ 中使用正则表达式将科学记数法转换为文本或整数的主要内容,如果未能解决你的问题,请参考以下文章

用于验证科学记数法的 RegEx

科学记数法数字的正则表达式?

正则表达式匹配数字的科学记数法但不匹配其他字母

正则表达式去除除科学记数法之外的所有非数字字符

将两个正则表达式合并为一个

科学计数法1