Python:如果ELSE都被执行了

时间:2017-05-23 10:43:50

标签: python json if-statement unicode utf-8

我正在提取JSON响应并将其数据存储到python列表中。响应中的一些字段采用“unicode”格式,因此我将其转换为“utf-8”格式,然后将其存储到列表中。现在问题是,一些unicode字段返回'NoneType',在任何情况下都无法编码​​或操作。所以我写了一个IF ELSE块,首先检查它是否为'None'。但我认为它没有按预期工作。以下是我的代码:

res = []
for a in response['Data'] : 

    res.append(a ['Id']['Id']) #ParticipatingIndividualId
    res.append(a ['UserId']) #UserId
    res.append(a ['DisplayName']) # FirstName_EN

    if (a ['Company']['en']) is None :
        res.append(None)
    else :
        res.append(a ['Company']['en']).encode('utf-8') #ParticipatingCompanyName_EN
...
...

但是在运行之后,它仍然给出了一个错误,说“NoneType对象没有属性编码”。所以我想我的IF ELSE逻辑不起作用。或者也可能存在其他一些问题。任何人都可以建议这里有什么问题。这将是一个很大的帮助。

1 个答案:

答案 0 :(得分:1)

如果和其他人没有同时运行。这是不可能的

您需要对字符串进行编码,而不是对追加函数

进行编码

a['Company']['en'].encode('utf-8')

您也可以在一行中完成所有操作

res.append(None if a['Company']['en']) is None else a['Company']['en'].encode('utf-8'))