【发布时间】:2013-11-30 19:53:43
【问题描述】:
我正在读取一个数字列为 -4.8416932597054D-04 的文件,其中 D 是科学记数法。我以前从未见过这种符号。 Python 如何将 -4.8416932597054*D*-04 读取为 -4.8416932597054*E*-04 我查看了其他问题,但没有阅读任何解决此问题的内容? (或者我有但没有认出来。)谢谢。
【问题讨论】:
我正在读取一个数字列为 -4.8416932597054D-04 的文件,其中 D 是科学记数法。我以前从未见过这种符号。 Python 如何将 -4.8416932597054*D*-04 读取为 -4.8416932597054*E*-04 我查看了其他问题,但没有阅读任何解决此问题的内容? (或者我有但没有认出来。)谢谢。
【问题讨论】:
def to_float(s):
return float(s.lower().replace('d', 'e'))
编辑:你能举一个输入字符串的例子,它仍然给你“同样的错误”吗?因为to_float('-4.8416932597054D-04') 非常适合我,所以返回-0.00048416932597054。
【讨论】:
你理解这个符号吗?如果是这样,您可以利用您的知识来解决这个问题。用数字进行字符串格式化,解析它,使用正则表达式从数字中提取D-04并将其转换为更多数字的字符串,附加到原始字符串并让Python对其进行转换。
没有适用于世界上每个案例或每个数据模型的 Python 模块,我们(尤其是您)必须创建自己的解决方案。
def read_strange_notation(strange_number):
number, notation = strange_number.split('D-')
number, notation = int(number), int(notation)
actual_number = number ** notation # here I don't know what `D-` means,
# so you do something with these parts
return actual_number
【讨论】: