Я пытаюсь перебрать объект 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 = '\t', lineterminator = '\n')
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 - перед этой строкой, - нет?Как я могу напечатать «а» для отладки кода?
Спасибо!