2015-08-18 17 views
0

我有一个带推文的JSON文件 - 其中大部分都是德文的。我想将其转换为CSV文件。我是Python的新手,并且遵循这个solution。但是编码问题阻碍了我的继续。Python:JSON到CSV Unicode编码

这里是我的代码生成从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

您是否使用Python2或Python3? –

+0

我正在使用Python2。 – Yodel

回答

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"]]) 
+0

非常感谢你,完美的工作。任何想法如何我可以在“源”中解码HTML元素,如“<”或“"”? – Yodel

+0

使用“html”库! 'import html' 'html.unescape(x [“source”])' –