将json文件中的两个字段添加到一个列表中,将两者都转换为浮点数,将其中一个字段转换为负数

时间:2020-09-19 11:29:45

标签: python json list

Python代码:

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的每个字符串都应为正浮点数。

1 个答案:

答案 0 :(得分:0)

此行:

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

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

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

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

如果field7的值为负,则我们将kontoall的值设置为field7的值,否则为field8的负数,并将其强制转换为float。

相关问题