【发布时间】:2022-01-18 21:08:42
【问题描述】:
旧标题:将不带“e”的科学计数法字符串转换为 Python 中的浮点数
我使用的程序允许某些...奇怪的格式。实数的一种格式是不带字母字符“E”的科学记数法。例如,“-1.67E-6”可以写成“-1.67-6”。显然, float() 不喜欢这样。我正在编写许多需要在多个字段中进行相同检查的类,因此我需要一个函数来干净地执行此操作。有没有办法覆盖 float() 的内置定义,以便它可以处理这种格式?我认为这将是理想的,但我不确定是否可能。
我目前的解决方法是使用我自己的字符串到浮点函数,如下所示。
str2float(s):
if re.search(r'([-+][0-9]*.[0-9]*)([-+][0-9]*)', s):
base, exp = re.findall(r'([-+][0-9]*.[0-9]*)([-+][0-9]*)', X1)[0]
s = f'{base}E{exp}'
return float(s)
【问题讨论】:
-
你的示例输入和示例输出是什么?
-
我想打电话给
float('-1.67-6')并得到-1.67e-06的输出 -
在
e之后总是有-吗?我的意思是,没有你想要1.676->1.67e06的情况吗? -
是的,你怎么知道它是正面的还是负面的?
-
像
re.sub(r'(?<=\d)-(?=\d)', 'E-', '-1.67-6')和re.sub(r'(?<=\d)\+(?=\d)', 'E', '-1.67+6')这样的东西可以工作吗?
标签: python string floating-point exponent