2015-12-08 39 views
0

我正在寫一個來自巴西頁面的刮碼,並且我正在將結果寫入一個文件,結果是我從代碼中得到的結果在ASCII中不受支持,並且給了我這個錯誤:有沒有辦法轉換爲unicode文件中的文本?在Python

File "testUnicode.py", line 6 SyntaxError: Non-ASCII character '\xc3' in file testUnicode.py on line 6, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

,所以我找到了答案這裏解決這個錯誤:

file.write(news.encode('uft8')) 

和它的工作,因爲它把我關了錯誤,但事情是,我仍然得到一個壞的方式的信息,像這樣:

Em tom de desabafo, peemedebista diz que, no 1º mandato, foi um 'vice decorativo' Coalizão diz que usará sua maioria na Assembleia para libertar antichavistas Segundo autoridades, casal acusado das mortes estava 'radicalizado havia algum tempo' Entre as mulheres, índice vai a 52%; maioria da população aprova movimentos feministas Manifestantes bloqueiam ruas contra a reorganização das escolas; houve discussão com motoristas Animalzinho é menor que um grão de gergelim

有沒有辦法解決這個問題?

+1

你需要知道原始文本是什麼編碼。 – BrenBarn

+1

我不認爲它是'utf-8'.Use正確的編碼 – vks

回答

0

原來的錯誤:

File "testUnicode.py", line 6 
    SyntaxError: Non-ASCII character '\xc3' in file testUnicode.py on line 6, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details 

被造成的,因爲你的文件有UTF-8字符,請聲明與編碼:

# -*- coding: utf-8 -*- 

第二個問題造成的,因爲無論是把你的文字解釋它編碼爲latin1而不是utf8,例如

c = u'\u00e3' # Codepoint for LATIN SMALL LETTER A WITH TILDE 

c.encode('utf8') # UTF8 encoding produces 2 bytes 
>>> '\xc3\xa3' 

# Those bytes, read as latin1 
print c.encode('utf8').decode('latin1') 
>>> ã 

# E.g. \xc3 => Ã 
#  \xa3 => £ 

所以,你的文件是寫爲utf8,但讀作latin1

相關問題