簡體   English   中英

編解碼器python列表

[英]Codec python list

我創建了一些帶有特殊字符的列表。 但是,當我打印這些列表時,編解碼器中出現了一些錯誤。

#!/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']

我該怎么做才能糾正它?

煮熟后,Unicode很好地連接到了python 2上。 特別是str對象可以保存二進制編碼的數據或ascii字符串數據,您只需要知道程序中的哪一個即可。 后來添加了unicode類型,它可以實現您的期望-它包含能夠表達unicode代碼集的寬文本字符。

為了使事情變得混亂,您的控制台和文本編輯器可能本機支持utf-8,因此在您查看時,包含編碼的u​​tf-8八位字節的字符串可能看起來正確。 這兩個字符串看起來相同,但是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

最后,python 3已經問世很長時間了,不懂英語的人應該特別高興它在處理國際字符集方面做得很好。

Python已死... Python萬歲!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM