【问题标题】:how to convert text values in an array to float and add in python如何将数组中的文本值转换为浮点数并在python中添加
【发布时间】:2014-03-21 11:51:20
【问题描述】:

我有一个包含值的文本文件:

120 25 50
149 33 50
095 41 50
093 05 50
081 11 50

我提取了第一列中的值,然后放入一个数组中:adjusted

如何使用 for 循环将值从文本转换为浮点数并为每个值添加 5?

我想要的输出是:

125
154
100
098
086

这是我的代码:

adjusted = [(adj + (y)) for y in floats]

A1 = adjusted[0:1]
A2 = adjusted[1:2]
A3 = adjusted[2:3]
A4 = adjusted[3:4]
A5 = adjusted[4:5]
print A1
print A2
print A3
print A4
print A5


A11= [float(x) for x in adjusted]
FbearingBC = 5 + float(A11)
print FbearingBC

它给了我错误它说我不能添加浮点数和字符串 请帮忙

【问题讨论】:

  • 您可以按以下方式进行转换:float(number_string)。另外,它在哪一行给你错误?
  • 上线:FbearingBC = 5 + float(A11)

标签: python arrays for-loop


【解决方案1】:

假设你有:

adjusted = ['120', '149', '095', ...]

最简单的转换成float加五的方法是:

converted = [float(s) + 5 for s in adjusted]

这将创建一个新列表,遍历旧列表中的每个字符串 s,将其转换为 float 并添加 5

将列表中的每个值分配给单独的名称(A1 等)不是一个好方法;如果您的条目比预期的多或少,这将中断。通过索引访问每个值(例如adjusted[0])或迭代它们(例如for a in adjusted:)会更加简洁且不易出错。

【讨论】:

    【解决方案2】:

    这段代码应该可以工作:

    with open('your_text_file.txt', 'rt') as f:
        for line in f:
            print(float(line.split()[0]) + 5)
    

    它将显示:

    125.0
    154.0
    100.0
    98.0
    86.0
    

    或者你需要一个列表中的所有值:

    with open('your_text_file.txt', 'rt') as f:
        values = [float(line.split()[0]) + 5 for line in f]
    print (values)
    

    【讨论】:

      【解决方案3】:

      由于您正在从文件中读取数据,因此可以按如下方式进行:

      with open('data.txt', 'r+') as f: # where data.txt is the file containing your data
          for line in f.readlines(): # Get one line of data from the file
              number = float(line.split(' ')[0]) # Split your data by ' ' and get the first number.
              print "%03d" % (number + 5) # Add 5 to it and then print using the format "%03d"
      

      希望这会有所帮助。

      【讨论】:

        【解决方案4】:
        >>> [float(value)+5 for value in adjusted]
        [125.0, 154.0, 100.0, 98.0, 86.0]
        

        这是一个列表推导式,因此它完成了转换为浮点数、加 5 并将它们附加到列表中的所有功能。但是,如果您的所有数字都是整数,则应将其转换为 int,这样您就不会拥有所有的 .0s。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-01-24
          • 1970-01-01
          • 1970-01-01
          • 2017-09-12
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多