我想将字符串中给定位置的字母大写。我对特殊字母有疑问 - 具体来说是波兰语字母:例如“±”。理想情况下,解决方案也适用于法语、西类牙语等(ç、è 等)
dobry="costąm"
print(dobry[4].decode('utf-8').upper())
我得到:
File "/usr/lib/python2.7/encodings/utf_8.py", line 16, in decode
return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xc4 in position 0: unexpected end of data
此时:
print("ą".decode('utf-8').upper())
我根据需要获得 Ą。
更好奇的是位置 0-3 上的字母在以下情况下工作正常:
print(dobry[5].decode('utf-8').upper())
同样的问题
最佳答案
字符串实际上是这样的:
>>> list(dobry)
['c', 'o', 's', 't', '\xc4', '\x85', 'm']
所以,dobry[5] == '\x85'
因为字母 ± 由两个字节 表示。要解决这个问题,只需使用 Python 3 而不是 Python 2。
关于python - .decode ('utf-8' ).upper() 和特殊字符的问题(但仅限于字符串内部),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54851079/