“如何读取文件并将一个文件值与另一个文件索引相乘”

时间:2019-04-12 08:02:09

标签: python-3.x

分别读取文本和json文件,并将数据加载到相应的变量中。 然后,对它们进行迭代循环以相应地计算作用力,并将结果值保留在列表中,最后保存为json。

  import json


 acce = ''
   with open('accelration.txt', 'r') as js:
        for `line` in js:
        acce = line.split('  ')
print(acce)
['18,33,56,60,17,35,83,87,42,27,27,21,33,22,44,2']

mas = ''
 with open('mass.json', 'r') as js:
      for line in js:
      mas = line.split('  ')
print(mas)
 ['[1.8, 3.3, 5.6, 6.0, 1.7, 3.5, 8.3, 8.7, 4.2, 2.7, 0.27, 2.1, 3.3, 2.2, 0.44, 2.7]']

def force(a,m):
    for i in range(force):
    force.append(a*m)
print(force)

1 个答案:

答案 0 :(得分:1)

第一步是获取accemas的有效数字列表。

根据您发布的内容,accel是一个包含由逗号分隔的值的单个字符串的列表。因此,您首先需要使用accel[0]访问该字符串,然后使用spli(,)获取值列表并将每个值转换为int

acce = ['18,33,56,60,17,35,83,87,42,27,27,21,33,22,44,2']

accel_list = [int(i) for i in acce[0].split(',')]
print(accel_list)

输出:[18, 33, 56, 60, 17, 35, 83, 87, 42, 27, 27, 21, 33, 22, 44, 2]

接下来,mas是一个列表,其中包含一串用逗号分隔的值,其格式为列表。因此,您可以使用ast.literal_eval()将该字符串作为列表求值:

import ast
mas = ['[1.8, 3.3, 5.6, 6.0, 1.7, 3.5, 8.3, 8.7, 4.2, 2.7, 0.27, 2.1, 3.3, 2.2, 0.44, 2.7]']
mass_list = ast.literal_eval(mas[0])
print(mass_list)

输出:[1.8, 3.3, 5.6, 6.0, 1.7, 3.5, 8.3, 8.7, 4.2, 2.7, 0.27, 2.1, 3.3, 2.2, 0.44, 2.7]

现在您有两个有效列表(accel_listmass_list),您可以将它们乘以使用列表理解力:

force = [a*m for a,m in zip(accel_list,mass_list)]
print(force)

输出:[32.4, 108.89999999999999, 313.59999999999997, 360.0, 28.9, 122.5, 688.9000000000001, 756.9, 176.4, 72.9, 7.290000000000001, 44.1, 108.89999999999999, 48.400000000000006, 19.36, 5.4]

如果您希望将结果四舍五入为例如。小数点后2位,您也可以在列表推导中执行以下操作:

force = [round(a*m,2) for a,m in zip(accel_list,mass_list)]
print(force)

输出:[32.4, 108.9, 313.6, 360.0, 28.9, 122.5, 688.9, 756.9, 176.4, 72.9, 7.29, 44.1, 108.9, 48.4, 19.36, 5.4]