python迭代JSON对象并写入csv
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python迭代JSON对象并写入csv相关的知识,希望对你有一定的参考价值。
我试图迭代一个JSON对象,并写入一个新的CSV文件。
无论如何,我在尝试此代码时遇到错误:
def flat_attr(thisAttr):
if type(thisAttr) is bytes:
thisAttr = (thisAttr.decode('utf-8'))[:1500]
else:
try:
thisAttr = str(thisAttr)[:1500]
except:
thsAttr = thisAttr
return thisAttr
thisDate = (datetime.today().date())
thisFile = 'sim_' + thisDate.strftime('%Y%m%d') + '.csv'
with open('/tmp/' + thisFile, 'w') as csvfile:
writer = csv.DictWriter(csvfile, fieldnames = ['sim_id', 'data'], delimiter = ' ', lineterminator = '
')
counter = 0
for issue in results.issues:
counter += 1
print('Writer written line ' + str(counter) + ' issue_id: ' + issue.main_id)
print('Writer written line ' + str(counter) + ' issue_id: ' + issue.labels)
writer.writerow({
'sim_id': issue.main_id,
'data': json.dumps({
for a in dir(issue):
if a in attr_list:
a: flat_attr(getattr(issue, a))
print(a)
})
})
错误就是这个:
E for a in dir(issue):
E ^
E SyntaxError: invalid syntax
当我将该循环的writerow()更改为以下代码时,它可以工作:
writer.writerow({
'sim_id': issue.main_id,
'data': json.dumps({
a: flat_attr(getattr(issue, a)) for a in dir(issue) if a in attr_list
})
})
我想首次亮相,这就是我试图打印'a'的原因。
当for循环和if子句在a: flat_attr(getattr(issue, a))
之后时,循环如何工作,而当for和if在该行之前时它不会出现?如何打印'a'来调试代码?
谢谢!
答案
如果您想调试在特定行中传递的数据,那么您可以使用像Pycharm这样的IDE。使用Pycharm可以保留断点,并且可以选择在运行时调试应用程序,现在您可以轻松地调试程序。
试一试..
另一答案
好的,做一件事ZeleIB,将'a'的值附加到列表并返回列表以进行测试。 例,
for a in dir(issue):
debug_a = []
if a in attr_list:
a: flat_attr(getattr(issue, a))
debug_a.append(a)
return {'test': debug_a}
以上是关于python迭代JSON对象并写入csv的主要内容,如果未能解决你的问题,请参考以下文章
遍历 CSV 的每一行并使用 Python-Pandas 写入文件夹中的单个 JSON 文件
TypeError:'int'对象不可迭代,使用 Python 3 [关闭]