Python不能处理瑞典字符

2024-09-28 20:45:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图操作存储在表中的数据。表列的瑞典语名称为Ä、Ä或Ö。在

Python Shell可以打印字符,但当我将它们存储在一个列表中时,它们将不起作用:

>>> print 'åäö'
åäö
>>> testlist = ['åäö', 'öööö']
>>> testlist
['\xe5\xe4\xf6', '\xf6\xf6\xf6\xf6']
>>> import sys
>>> sys.getdefaultencoding()
'ascii'
>>> 

要让python使用Ä和ç,我需要做些什么?在

编辑:

这将按照@schwobaseggl的建议工作:

^{pr2}$

我很困惑。我真正要做的是为UpdateCursor提供一个字段列表。我猜字段列表看起来不像光标的“åää”,而是“\xe5\xe4\xf6”,当光标试图将列表中的字段与表中的实际字段匹配时,光标会失败:

with arcpy.da.UpdateCursor(fc, fieldlist) as ucursor:
    for row in ucursor:
        ...

Tags: 数据import名称列表sysshell字符print
2条回答

['\xe5\xe4\xf6','\xf6\xf6\xf6\xf6']hmmm,这是个坏消息,这意味着列表内容不是文本。只有字节序列。在

为了正确使用所有语言,可以使用字符串前缀“u”。 例如(在俄语中,我的键盘上没有任何瑞典字符)

str=u'Приет!'在

打印列表时,请注意list__str__(由print隐式调用)使用其元素__repr__来显示它们。似乎没什么不对劲。检查:

>>> testlist = ['åäö', 'öööö']
>>> print testlist
['\xc3\xa5\xc3\xa4\xc3\xb6', '\xc3\xb6\xc3\xb6\xc3\xb6\xc3\xb6']

>>> for x in testlist:
...   print x, repr(x)
...
åäö '\xc3\xa5\xc3\xa4\xc3\xb6'
öööö '\xc3\xb6\xc3\xb6\xc3\xb6\xc3\xb6'

在处理非ascii字符时,最好使用unicode字符串。他们表现得更好:

^{pr2}$

相关问题 更多 >