2017-05-26 142 views
0

我收到的位置的名單是這樣處理來自JSON響應

region_response = json.loads(requests.get(region_req_url).text) 

很多名字都字符表示像響應,在那個地方的名字是Torö StenstrandTor\u00f6 Stenstrand轉義Unicode字符。

然後我加入一些接收元素的字典和保存該到一個新的JSON文件

with open('spots.json', 'w') as wf: 
    json.dump(results, wf, skipkeys=False, ensure_ascii=True, indent=4) 

生成的文件也有轉義字符像\u00f6但我需要這種有實際表示形式如ö

我的工作到目前爲止在this repo,特別是在magicseaweed.pywindguru.py

如果之前已經回答了這個問題,或者我的描述/假設不正確,我已經表示歉意 - 我一直在嘗試解決這個問題很長一段時間了,但我不認爲我理解這個區域足夠了解正是我應該尋找或閱讀的內容!任何幫助/建議/指針將大量讚賞。

回答

0

得到這個工作:)首先我加編碼到json.loads ...

response = requests.get(region_req_url) 
response = requests.utils.get_unicode_from_response(response) 
region_response = json.loads(response, encoding='utf-8') 

然後在嘗試上面的Sijan的答案後,我得到錯誤(顯示在通信ent),並試圖修復錯誤時,我遇到了this answer,並且該解決方案已工作。因此,要寫信給我的JSON文件我做...

with io.open("results.json",'w', encoding="utf-8") as outfile: 
    outfile.write(unicode(json.dumps(results, ensure_ascii=False, indent=4))) 

現在地名像Torö Stenstrand寫入JSON文件。

0

我曾經解決io模塊這個問題如下

import io 
j = {'d': '中', 'e': 'a'} 
with io.open('myfile.json', 'w', encoding='utf8') as json_file: 
    json.dumps(j, json_file, ensure_ascii=False) 

輸出:

{"d": "中", "e": "a"}' 
+0

謝謝你的回答!我得到一個錯誤,因爲我的字典包含的字符串不是unicode TypeError:必須是unicode,而不是str,所以像\ u00f6這樣的轉義字符是字符串格式,需要轉換爲unicode。我嘗試過'unidict = {k.decode('utf8'):v.decode('utf8')for k,v in results.items()}'from this answer](https:// stackoverflow .com/questions/16705274 /最快的方式來轉換一個字典鍵值從字符串到Unicode),但得到錯誤AttributeError:'字典'對象沒有屬性'解碼',所以我想我在這裏錯過了一些東西。 – Cian