好的,所以我正在处理这个
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 个字符...节省空间...打孔卡...没人在乎了。
当像这样的愚蠢的东西应该起作用时,可能不会为此使用正则表达式:
s.replace("-", "e-").lstrip("e")