【发布时间】:2015-02-21 05:48:38
【问题描述】:
我收到以下错误。什么意思?
AttributeError: 'bool' object has no attribute 'decode'
在代码行中:writer.writerow({k:v.decode('utf8') for k,v in dictionary.iteritems()})
我的代码如下:
import json
import csv
def make_csv(data):
fname = "try.csv"
with open(fname,'wb') as outf:
dic_list = data['bookmarks']
dictionary = dic_list[0]
writer = csv.DictWriter(outf,fieldnames = sorted(dictionary.keys()), restval = "None", extrasaction = 'ignore')
writer.writeheader()
for dictionary in dic_list:
writer.writerow({k:v.decode('utf8') for k,v in dictionary.iteritems()})
return
def main():
fil = "readability.json"
f = open(fil,'rb')
data = json.loads(f.read())
print type(data)
make_csv(data)
json 文件如下所示:
{ "bookmarks" : [{..},{..} ..... {..}],
"recommendations" : [{..},{..}...{..}]
}
其中[..] = 列表和{..} = 字典
编辑:
上述问题已解决,但是当我运行上述代码时,生成的 CSV 文件有一些差异。有些行是随机粘贴的,即在 .csv 文件的不同标题下。有什么建议吗?
【问题讨论】:
-
在某些时候,v 的值是一个布尔值(True 或 False),因此您尝试执行
True.decode()或False.decode(),但这是行不通的。我希望这是一些现有问题的重复。 -
我不明白 v 是如何布尔的,在任何时候。它是字符串。键的值。
-
只有一个地方需要解码,那就是
v.decode('utf8')。错误显示'bool' object has no attribute 'decode'。所以v的值可能就是那个bool 对象,这意味着它要么是True要么是False(因为没有任何其他的bool 对象)。 -
好的。我查看了json文件。这里有一些空值被翻译成
False。