Python:AttributeError:'set'对象没有属性'format'

时间:2017-05-03 09:39:48

标签: python python-2.7

我正在尝试下面的代码并弹出属性错误。我是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'

2 个答案:

答案 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;