我正在尝试下面的代码并弹出属性错误。我是Python新手,很高兴知道我可以做些什么来纠正这个错误。
with open(csv_file_path,'wb+') as fout:
csv_file = csv.writer(fout)
csv_file.writerow(list(column_names))
with open(json_file_path) as fin:
for line in fin:
line_contents = json.loads(line)
csv_file.writerow(get_row(line_contents,column_names))
read_and_write_file(json_file,csv_file,column_names)
if isinstance(line_value,unicode):
row.append({0}.format(line_value.encode('utf-8')))
Traceback (most recent call last):
File "Json_convert.py", line 89, in <module>
read_and_write_file(json_file, csv_file, column_names)
File "Json_convert.py", line 19, in read_and_write_file
csv_file.writerow(get_row(line_contents,column_names))
File "Json_convert.py", line 62, in get_row
row.append({0}.format(line_value.encode('utf-8')))
AttributeError: 'set' object has no attribute 'format'
答案 0 :(得分:0)
在python中,使用大括号(编写{0}
的地方)用于创建一个称为集合的内置对象。一个集合(就像在数学中一样)是一个无序的独特元素集合,并且无法格式化,因此没有set.format
方法,当你试图调用格式方法时导致属性错误设置:{0}.format(..)
。
你可能意味着:
row.append("{0}".format(line_value.encode('utf-8')))
这会创建一个字符串,它有一个格式方法,所以这应该有用。
答案 1 :(得分:-1)
使用类型种姓,替换你的这一行,
row.append({0}.format(line_value.encode('utf-8')))
与
row.append({0}.format(str(line_value).encode('utf-8')))
现在您可以将其格式化为&#39; utf-8&#39;