2016-11-01 7 views
0

私は特殊文字でいくつかのリストを作成しました。しかし、私はこれらのリストを印刷しているときにコーデックに何らかのエラーが現れました。コーデックのpythonリスト

#!/usr/bin/env python 
#-*- coding: utf-8 -*- 

#My lists 
geometriaAproximada = ['Sim', 'Não']; 
regime = ['Permanente', 'Permanente com grande variação', 'Temporário', 
       'Temporário com leito permanente', 'Seco']; 
tipomassadagua = ['Oceano', 'Baía', 'Enseada', 'Meandro abandonado', 
          'Lago/Lagoa', 'Represa/Açude', 'Desconhecida']; 
vegetacao_nivel_1 = ['Manguezal', 'Restinga', 'Brejo Litoraneo', 'Mussununga', 
           'Vegetação com influência fluvial e/ou lacustre', 'Compo Rupestre' 
           'Floresta Estacional', 'Cerrado', 'Caatinga', 'Áreas Antropizadas', 
           'Rios, Lagos, Lagoas, e Corpos d''água']; 
vegetacao_nivel_2 = ['Arbustiva/Arbórea', 'Apicum', 'Herbáceo-Arbustivo', 'Arbustiva', 'Herbácea', 
           'Terras baixas', 'Aluvial' 'de Altitude (Submontana ou Montana)', 'Decidual', 'Semidecidual' 
           'Tipo biogeográfico de Cerrado', 'Tipo biogeográfico de Caatinga']; 
vegetacao_nivel_3 = ['Estágio secundário inicial de regeneração', 
           'Estágio secundário médio de regeneração', 
           'Estágio primário e/ou secundário avançado de regeneração', 
           'Mata de Cipó', 'Terras baixas', 'de Altitude (Submontana/Montana)', 'Aluvial', 
           'Florestado (Cerradão)', 'Arborizado (Stricto sensu)', 'Parque (Campo cerrado)', 'Campo Limpo', 
           'Vereda', 'Floresta de galeria', 
           'Florestada', 'Arborizada', 'Parque', 'Gramínio-lenhosa']; 

私はそれらの誰かを印刷:

print regime 

['Permanente', 'Permanente com grande varia\xc3\xa7\xc3\xa3o', 'Tempor\xc3\xa1rio', 'Tempor\xc3\xa1rio com leito permanente', 'Seco'] 

は、私はそれを修正するために何ができますか?

+0

ほとんどの例を抜き出し、1つの短いリストに焦点を当ててみましょう。 – tdelaney

+1

重複していますか? http://stackoverflow.com/questions/3597480/how-to-make-python-3-print-utf8#3603160または2.7:http://stackoverflow.com/questions/5203105/printing-a-utf-8 -encoded-string – kabanus

+0

'print'はテキストのみを出力できます。あなたが何か違うものを与えると** ** unambiguous **に変換しようとします**文字列 - たとえばリストの場合は '['、 ']'、クォータマーク(文字列)を追加し、 exaclyエンコーディングが使用されたことを示します。エラーではなく意図的な動作です。正しいテキストが必要な場合は、自分でリストを文字列に変換する必要があります。 – furas

答えて

0

言語が調理された後も、UnicodeはPython 2にボルトで固定されていました。特にstrオブジェクトは、バイナリコード化されたデータまたはASCII文字列データを保持することができます。 unicodeタイプは後で追加され、あなたが期待するものを実行します。これは、ユニコードコードセットを表現できるワイドテキスト文字を保持します。

問題を混乱させないように、コンソールとテキストエディタはutf-8をネイティブにサポートする可能性が高いため、エンコードされたutf-8オクテットを保持する文字列が表示されます。これらの2つの文字列は同じように見えますが、reprは私たちに異なっていることを示しています。だから、PythonのUnicode文字列

>>> s = 'Permanente com grande variação' 
>>> u = u'Permanente com grande variação' 
>>> print repr(s) 
'Permanente com grande varia\xc3\xa7\xc3\xa3o' 
>>> print repr(u) 
u'Permanente com grande varia\xe7\xe3o' 
>>> s_decode = s.decode('utf-8') 
>>> print repr(s_decode) 
u'Permanente com grande varia\xe7\xe3o' 

であることをデコードする最初のニーズは、あなたの問題の最初の部分はでスタートしUnicodeとして、あなたの文字列を書き込むことによって解決されます。

u'Permanente com grande variação' 

第二の問題は、あなたがリストを印刷するとき、Pythonはそのメンバーのreprを印刷し、あなたの文字列がまだエンコードの文字が表示されるということです。これは本当に修正する必要はありません - それは単にPythonがリストを出力する通常の方法です。あなたは何かが整然としたい場合は、として、独自の出力を構築する必要が最後に

>>> mylist = [u'Permanente com grande variação', u'Vegetação com influência'] 
>>> print mylist 
[u'Permanente com grande varia\xe7\xe3o', u'Vegeta\xe7\xe3o com influ\xeancia'] 
>>> print u', '.join(mylist) 
Permanente com grande variação, Vegetação com influência 

に、パイソン3は、そのが働いて素晴らしい仕事をしていることは特に幸せにする必要があり、非常に長い時間と非英語話者のためになっています国際的な文字セットを使用します。

Pythonが死んでいます...長いライブPython!

+0

完璧、ありがとう! – dogosousa

関連する問題