Python:读取数字格式时遇到问题
Posted
技术标签:
【中文标题】Python:读取数字格式时遇到问题【英文标题】:Python: trouble reading number format 【发布时间】:2013-11-30 19:53:43 【问题描述】:我正在读取一个数字列为 -4.8416932597054D-04 的文件,其中 D 是科学记数法。我以前从未见过这种符号。 Python 如何将 -4.8416932597054*D*-04 读取为 -4.8416932597054*E*-04 我查看了其他问题,但没有阅读任何解决此问题的内容? (或者我有但没有认出来。)谢谢。
【问题讨论】:
【参考方案1】:def to_float(s):
return float(s.lower().replace('d', 'e'))
编辑:你能举一个输入字符串的例子,它仍然给你“同样的错误”吗?因为to_float('-4.8416932597054D-04')
非常适合我,所以返回-0.00048416932597054
。
【讨论】:
我仍然遇到同样的错误。我刚刚发现其他讨论将 D 识别为 FORTRAN 科学记数法,将 numpy 识别为 FORTRAN 友好。我已经为其他目的导入了 numpy,所以也许有办法。 ***.com/questions/1959210/… 对不起,我一开始做错了。我得到“'int'对象没有属性'lower'” 我还应该补充一点,我将使用该函数来读取数组中的元素。例如 to_float(col_C),col_C 是从文本文件中读取的一维数组。 @user3052914:所以不要将它传递给 int!从文件中读取一个字符串,将其传递给 to_float,然后取回一个浮点值。 def to_float(s): ----> 2 return float(s.lower().replace('d', 'e')) 3 4 col_C='-4.8416932597054D-04 ' 5 ValueError:无法将字符串转换为浮点数:col_c【参考方案2】:你理解这个符号吗?如果是这样,您可以利用您的知识来解决这个问题。用数字进行字符串格式化,解析它,使用正则表达式从数字中提取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
【讨论】:
我现在明白这个符号了。但是,我不知道如何解析、提取、翻译和附加它。你能帮我解决这个问题吗?以上是关于Python:读取数字格式时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章
将 ObjC NSNumber 代码迁移到 Swift 并在显示数字时遇到问题。