我有一個文件,其中每一行是一個JSON對象,像這樣:的Python 2.7 JSON傾倒UnicodeEncodeError
{"name": "John", ...}
{...}
我試圖創建具有相同對象的新文件,但所有的移除某些屬性他們。
當我這樣做,我得到一個UnicodeEncodeError。奇怪的是,如果我反過來range(n)
(對於某些編號n)並使用infile.next()
,它的工作原理與我想要的一樣。
爲什麼這麼說?我如何通過迭代infile
來實現這個功能?我嘗試使用dumps()
而不是dump()
,但這只是在outfile
中產生了一堆空行。
with open(filename, 'r') as infile:
with open('_{}'.format(filename), 'w') as outfile:
for comment in infile:
decodedComment = json.loads(comment)
for prop in propsToRemove:
# use pop to avoid exception handling
decodedComment.pop(prop, None)
json.dump(decodedComment, outfile, ensure_ascii = False)
outfile.write('\n')
以下是錯誤:
UnicodeEncodeError: 'ascii' codec can't encode character u'\U0001f47d' in position 1: ordinal not in range(128)
感謝您的幫助!
你真的應該複製/粘貼整個錯誤信息。但即使沒有它,我猜測JSON的元素與您的控制檯編碼不兼容。 – 2015-03-03 05:38:19
@MarkRansom:謝謝,我是這麼做的。你能詳細說明一下嗎?爲什麼在我描述的另一種情況下,元素編碼很好? – Dimitrios 2015-03-03 06:25:13
我說*整個*錯誤信息 - 哪一行是錯誤?它來自哪裏?這是非常有用的信息。 – 2015-03-03 13:08:44