2017-08-26 34 views
1

* Hello friends! 我想轉換我的原始JSON鳴叫,我得到了使用Tweepy的CSV和只有兩個字段,「創建在」和「文本」在ASCII 我有錯誤是NameError「data_python」未定義。 我很困惑。 預先感謝您將json推文轉換爲csv時未定義Python名稱

這裏是我的代碼

import json 
import csv 
try: 
    data_json = open('nawaz.json', mode='r').read() 
    data_python = json.loads(data_json) // here.... 
except Exception as e: 
    print(str(e)) 

csv_out = open('tweets_out_ASCII.csv', mode='w') 
writer = csv.writer(csv_out) 

fields = ['created_at', 'text'] 
writer.writerow(fields) 

for line in data_python: // here it gives error 
    writer.writerow([line.get('created_at'), line.get('text').encode('unicode_escape'))] 

csv_out.close() 

這裏是我recieving

Traceback (most recent call last): 
    File "json_to_csv.py", line 25, in <module> 
    for line in data_python: 
NameError: name 'data_python' is not defined 

在這裏的錯誤是我的JSON例子

[![json example[![\]\[1\]][1]][1] 
+1

修復您的縮進。你有沒有導入json? –

+0

是的,我已經做過 –

+0

@AsifKhan確保你發佈的代碼重現了問題。看看如何製作[mcve]。 – Goyo

回答

2

當拋出錯誤,它跳過分配給變量,因爲data_json可能是沒有有效的json。

考慮一下:

try: 
    n = int('a') 
except ValueError: 
    pass 

什麼會n是什麼?它不能被分配給所有的東西,因爲引發的異常使得它跳過了分配。

所以,你可以給它一個默認值:

try: 
    data_json = open('nawaz.json', mode='r').read() 
    data_python = json.loads(data_json) 
except Exception: 
    data_python = [] # Some default value 

或者,你可以不捕獲該異常,並讓它失敗。

+0

「或者你可以不捕捉異常並讓它失敗。」優秀!爲什麼在你無法處理它們時捕捉異常?否則我不會回答。 –