正则表达式解释尴尬的科学记数法

问题描述 投票:0回答:1

好的,所以我正在处理这个

ENDF
数据,请参阅 here。有时,在文件中,它们很可能是我见过的最烦人的科学计数法浮点数编码1。那里经常使用
1.234e-3
代替
1.234-3
(省略“e”)。

现在我看到了一个库,通过简单的替换将

-
更改为
e-
+
更改为
e+
。但当某些数字可能为负数时,这就不起作用了。当输入是
e-5.122e-5
时,你最终会得到一些像
-5.122-5
这样的废话。

那么,我想我需要转向正则表达式?我愿意接受另一种更简单的解决方案,但这是我现在能想到的最好的解决方案。我正在使用

re
python 库。我可以做一个简单的替换,寻找
[0-9]-[0-9]
并像这样替换它:

import re
str1='-5.634-5'
x = re.sub('[0-9]-[0-9]','4e-5',str1)
print(x)

但显然这通常不起作用,因为我需要获取

-
之前和之后的数字,而不是我编造的东西......我之前使用过捕获组,但是什么是在这种情况下,对
-
之前和之后的数字使用捕获组并使用
Python
正则表达式库将其反馈到替换中的最快方法
import re

1 是的,我知道,fortran...80 个字符...节省空间...打孔卡...没人在乎了。

python regex scientific-notation
1个回答
0
投票

当像这样的愚蠢的东西应该起作用时,可能不会为此使用正则表达式:

s.replace("-", "e-").lstrip("e")
© www.soinside.com 2019 - 2024. All rights reserved.