【问题标题】:Converting a string (with scientific notation) to an int in Python在 Python 中将字符串(使用科学记数法)转换为 int
【发布时间】:2012-02-18 04:20:26
【问题描述】:

我正在尝试将 txt 文件中的一组字符串转换为列表中的 int。我能够找到一个很好的 sn-p 代码来返回每一行,然后我继续尝试将其转换为 int。问题是数字是科学记数法,我得到这个错误:ValueError: invalid literal for int() with base 10: '3.404788e-001'。

这是我一直在搞乱的代码

data = []
rawText = open ("data.txt","r")

for line in rawText.readlines():
    for i in line.split():
        data.append(int(i))

print data[1]
rawText.close()

【问题讨论】:

  • 它们不仅仅是“科学计数法”;它们代表非整数。您希望输入“3.404788e-001”得到什么结果?

标签: python


【解决方案1】:

float(i)decimal.Decimal(i) 用于浮点数,具体取决于保持精度对您的重要性。
float 将以机器精度 IEEE 浮点数存储数字,而Decimal 将保持完全准确,但代价是速度较慢。
此外,您可以遍历打开的文件,无需使用 readlines()
单个列表推导可以满足您的所有需求:

data = [float(number)
        for line in open('data.txt', 'r')
        for number in line.split()]

如果真的只需要整数,可以使用int(float(number))

【讨论】:

    【解决方案2】:

    您的字符串看起来像float,因此请先将其转换为float

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-22
      • 2011-02-02
      • 2014-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-27
      相关资源
      最近更新 更多