我有一个带推文的JSON文件 - 其中大多数都是德文版。我想将其转换为CSV文件。我是Python的新手并且遵循了这个solution。但编码问题阻碍了我继续前进。
以下是我从JSON文件生成CSV文件的代码:
import csv
import json
x="""[
{
"created_at": "Thu, 24 Jan 2013 23:59:58 +0000",
"id": 294595428815622140,
"source": "<a href="http://www.tweetdeck.com">TweetDeck</a>",
"text": "RT @marthadear: ich heule gerade, aber h\\u00f6rt blo\\u00df nicht auf! #aufschrei",
"user": {
"profile_image_url": "http://a0.twimg.com/profile_images/3187103131/33d7b666c757b7c50b01342f05345210_normal.jpeg",
"screen_name": "KatrinaR47"
}
}
]"""
x = json.loads(x)
f = csv.writer(open("test2.csv", "wb+"))
for x in x:
f.writerow([x["created_at"],
x["id"],
x["source"],
x["text"],
x["user"]["profile_image_url"],
x["user"]["screen_name"]])
我收到的错误消息如下
UnicodeEncodeError Traceback (most recent call last)
<ipython-input-32-0096601ea1bd> in <module>()
26 x["text"],
27 x["user"]["profile_image_url"],
---> 28 x["user"]["screen_name"]])
29
UnicodeEncodeError: 'ascii' codec can't encode character u'\xf6' in position 40: ordinal not in range(128)
显然解码不起作用。我试图找到许多不同的解决方案,但到目前为止我还无法成功应用。 你能帮我吗?
答案 0 :(得分:1)
在编写之前尝试编码x["text"]
(第26行)
像这样:
f.writerow([x["created_at"],
x["id"],
x["source"],
x["text"].encode("utf-8"),
x["user"]["profile_image_url"],
x["user"]["screen_name"]])