首页 > 解决方案 > 将json文件中的两个字段添加到一个列表中,将两者都变成浮点数,其中一个字段变成负数

问题描述

蟒蛇代码:

def konto_all():
    lst = [[], []]
    for index, x in enumerate(bankstm):
        kontoall = x["FIELD7"].replace(",", "."), x["FIELD8"].replace(",", ".")
        if kontoall != "" and index > 1:
            lst[0].append(kontoall)
            lst[1].append(x["FIELD1"].replace("-", ""))
    return(lst)
    
kontoall1 = konto_all()
kontoall = kontoall1[0]
print(kontoall)

json文件:

  {
    "FIELD1": "2020-05-27",
    "FIELD7": "",
    "FIELD8": "56.00"
  },
  {
    "FIELD1": "2020-05-25",
    "FIELD7": "109.00",
    "FIELD8": ""
  },
  {
    "FIELD1": "2020-05-20",
    "FIELD7": "78.90",
    "FIELD8": ""
  },
  {
    "FIELD1": "2020-05-19",
    "FIELD7": "56.90",
    "FIELD8": ""
  },
  {
    "FIELD1": "2020-05-19",
    "FIELD7": "46.80",
    "FIELD8": ""
  },
  {
    "FIELD1": "2020-05-18",
    "FIELD7": "",
    "FIELD8": "400.00"
  },

电流输出:

[('', '56.00'), ('109.00', ''), ('78.90', ''), ('56.90', ''), ('46.80', ''), ('', '400.00')]

想要的输出:

[56.00, -109, -78.90, -56.90, -46.80, 400.00]

FIELD7 中的每个字符串都应该是一个负浮点数。FIELD8 中的每个字符串都应该是一个正浮点数。

标签: pythonjsonlist

解决方案


这一行:

kontoall = x["FIELD7"].replace(",", ".") , x["FIELD8"].replace(",", ".")

实际上是创建一个元组,结果是[(val, ""), ("", val2), ...].

将该行更改为以下内容,它将按预期工作:

kontoall = float(x["FIELD7"].replace(",", ".")) or -float(x["FIELD8"].replace(",", "."))

这里我们将kontoallvalue 设置为 field7 的值,如果 field7 的值是 field8 的值,否则将其转换为 float。


推荐阅读