我正在尝试操纵存储在表格中的数据。表格列的瑞典名称为Å,Ä或Ö。
Python Shell可以打印字符,但是当我将它们存储在列表中时,它们将无法工作:
>>> print 'åäö'
åäö
>>> testlist = ['åäö', 'öööö']
>>> testlist
['\xe5\xe4\xf6', '\xf6\xf6\xf6\xf6']
>>> import sys
>>> sys.getdefaultencoding()
'ascii'
>>>
我需要做些什么才能让python与Å,Ä和Ö?
一起使用编辑:
这将按照@schwobaseggl的建议工作:
>>> testlist = ['åäö','ööö']
>>> for x in testlist:
print x
print repr(x)
åäö
'\xe5\xe4\xf6'
ööö
'\xf6\xf6\xf6'
我很困惑。我真正想要做的是提供一个UpdateCursor字段列表。我猜测字段列表看起来不像'åäö'到光标但是'\ xe5 \ xe4 \ xf6'并且光标在尝试将列表中的字段与表中的实际字段匹配时失败:
with arcpy.da.UpdateCursor(fc, fieldlist) as ucursor:
for row in ucursor:
...
答案 0 :(得分:2)
打印列表时,请注意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字符串。他们的表现更为出色:
>>> len('öäü')
6
>>> len(u'öäü')
3
>>> s = 'äöü'
>>> s_u = s.decode('utf-8')
>>> s
'\xc3\xa4\xc3\xb6\xc3\xbc'
>>> s_u
u'\xe4\xf6\xfc'
>>> s == s_u
False
答案 1 :(得分:1)
['\ xe5 \ xe4 \ xf6','\ xf6 \ xf6 \ xf6 \ xf6']嗯,这是不好的故事 - 这意味着列表内容不是文本。只有字节序列。
为了正确使用所有语言,您可以使用字符串前缀“u”。 例如(俄语 - 我的键盘上没有任何瑞典语字符),
str =u'Привет!'