python lis编解码器

2024-09-28 21:00:19 发布

您现在位置: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'];

当我把其中的某个人打印出来时:

^{pr2}$

我能做些什么来纠正它?在


Tags: com列表oudeestriogionivel
1条回答
网友
1楼 · 发布于 2024-09-28 21:00:19

Unicode在python2语言成熟之后很快就被固定在python2上了。尤其是str对象可以保存二进制编码的数据或ascii字符串数据,您只需要知道程序中哪个是哪个。unicode类型是稍后添加的,它具有您所期望的功能—它包含能够表示unicode代码集的宽文本字符。在

为了避免混淆,您的控制台和文本编辑器可能本机支持utf-8,所以当您查看时,保存编码的utf-8八位字节的字符串可能看起来很正确。这两个字符串看起来是一样的,但是repr向我们表明它们是不同的。第一个需要解码为pythonunicode字符串

>>> 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开始编写来解决的。在

^{pr2}$

第二个问题是,当您打印列表时,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

最后,python3已经推出很长一段时间了,非英语使用者应该特别高兴它在处理国际字符集方面做得很好。在

Python死了。。。Python万岁!在

相关问题 更多 >