TypeError:'int'对象不可迭代,使用 Python 3 [关闭]

Posted

技术标签:

【中文标题】TypeError:\'int\'对象不可迭代,使用 Python 3 [关闭]【英文标题】:TypeError: 'int' object is not iterable, Using Python 3 [closed]TypeError:'int'对象不可迭代,使用 Python 3 [关闭] 【发布时间】:2019-01-12 01:44:24 【问题描述】:

我在尝试清理 json 数据、将其保存到另一个 json 并最终将其转换为 csv 文件时遇到此错误: 对于 n 中的 data1:TypeError: 'int' object is not iterable

这是我的代码:

import json
import csv

with open('leap_data.json') as f:
    data = json.load(f)
#print(data)
cnt=0
final_list=

for k,v in data.items():
    for m,n in v.items():
        #print n
        cnt=cnt+1
        #print cnt
        if cnt==6:
            #print n
            for data1 in n:
                for a,b in data1.items():
                    final_list[a]=b    
                with open('output4.json', 'a') as outfile:  
                    json.dump(final_list,outfile)

            my_list = "["+open('output4.json').read().replace("",",")+"]"
            data_1 = json.loads(my_list)
            print(data_1)


with open(r'samp.csv', 'w+') as csvfile:
  output = csv.writer(csvfile)
  output.writerow(data_1[0].keys())
  for row in data_1:
        output.writerow(row.values())

请建议如何摆脱这个

【问题讨论】:

n 显然是一个整数。您的代码与输入数据不匹配。 但是这段代码在 Python 2 中运行 您应该将该信息添加到问题中。 json 或其他一些库可能在 2 和 3 之间发生了变化。 相同的代码在 Python 2 中运行良好。仅在 .item() 的情况下,我在 Python 2 中使用了 .iteritems()。 您还应该提供输入数据 【参考方案1】:

字典的 .items() 在 Python3 中不返回列表。 请参考这个question

示例 Python2 代码

for k, v in features.items():

等效的 Python3 代码

for k, v in list(features.items()):

您在 Python3 中的代码(在 pythonconverter 中生成)

import json
import csv

with open('leap_data.json') as f:
    data = json.load(f)
#print(data)
cnt=0
final_list=

for k,v in list(data.items()):
    for m,n in list(v.items()):
        #print n
        cnt=cnt+1
        #print cnt
        if cnt==6:
            #print n
            for data1 in n:
                for a,b in list(data1.items()):
                    final_list[a]=b    
                with open('output4.json', 'a') as outfile:  
                    json.dump(final_list,outfile)

            my_list = "["+open('output4.json').read().replace("",",")+"]"
            data_1 = json.loads(my_list)
            print(data_1)


with open(r'samp.csv', 'w+') as csvfile:
  output = csv.writer(csvfile)
  output.writerow(list(data_1[0].keys()))
  for row in data_1:
        output.writerow(list(row.values()))

希望这行得通!

【讨论】:

同样的错误仍然存​​在。对于 n 中的 data1:TypeError:'int' 对象不可迭代 你能分享示例输入 json 文件吗?

以上是关于TypeError:'int'对象不可迭代,使用 Python 3 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

TypeError:'int'对象不可迭代 - Python

Python Crawling-TypeError:'int'对象不可迭代

TypeError:'int'对象在odoo中不可迭代

导致 TypeError 的 Lambda 函数:“int”对象不可迭代

奥多。 TypeError:“int”对象不可迭代

Python:对奇数/偶数随机数求和生成 TypeError:'int' 对象不可迭代