我有一個twitter json文件,我試圖將英文和法文推文分成兩個單獨的文件。我使用Python 2.7使用下面的代碼:Python從json文件讀取記錄並寫入兩個單獨的json文件
import json
with open('tweets.json', 'r') as f:
with open('english.json', 'w') as enF:
with open('french.json', 'w') as frF:
for line in f:
tweet = json.loads(line)
if tweet["lang"] == "en":
json.dump(tweet, enF, sort_keys=True)
elif tweet["lang"] == "fr":
json.dump(tweet, frF, sort_keys=True)
這將產生兩個獨立的JSON文件,有英語的鳴叫和其他法國,我已經檢查之一。原始文件每行有一條推文。 english.json和french.json文件只包含所有推文的一行。不知道這是否會成爲問題,甚至不確定這是否正確。因此,我通過這個代碼(顯然,我改變了文件名)再次通過english.json,它給出了一個錯誤:
Traceback (most recent call last):
File "C:\Users\jack\Desktop\twitClean\j4.py", line 10, in <module>
tweet = json.loads(line)
File "C:\Python27\lib\json\__init__.py", line 339, in loads
return _default_decoder.decode(s)
File "C:\Python27\lib\json\decoder.py", line 367, in decode
raise ValueError(errmsg("Extra data", s, end, len(s)))
ValueError: Extra data: line 1 column 4926 - line 1 column 691991 (char 4925 - 691990)
我一直工作在這過去三天了,都來一無所有。任何人都可以請幫助,並告訴我我做錯了什麼?
當你做'tweet = json.loads(line)'時,你假設每行有一個類似json的元素。這可能是你爲什麼得到錯誤'ValueError:Extra data:[']''的原因。相反,你應該閱讀這樣的json文件,例如使用'json.loads(f)',其中'f'是打開的json文件對象,即'open('tweets.json','r')'。然後你可以探索它。看到上面的答案。它工作嗎? – Kanak
這適用於給新文件。當我通過這段代碼運行其中一個新文件時,它仍然會出現相同的錯誤。 – user1907031
你從'json.loads'中刪除's'嗎?然後,您將使用正確的方法來處理類文件對象,*即*,'json.load',**而不包含s **。如果你得到相同的錯誤,看起來你沒有。看到上面的答案。 – Kanak