编解码器 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,因此当您查看包含编码的 utf-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!
我创建了一些带有特殊字符的列表。但是,当我打印这些列表时,编解码器中出现了一些错误。
#!/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,因此当您查看包含编码的 utf-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!