python - .decode ('utf-8' ).upper() 和特殊字符的问题(但仅限于字符串内部)

标签 python python-2.7 uppercase python-unicode polish

我想将字符串中给定位置的字母大写。我对特殊字母有疑问 - 具体来说是波兰语字母:例如“±”。理想情况下,解决方案也适用于法语、西类牙语等(ç、è 等)

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/

相关文章:

python - 用cartopy绘制大圆路径

python - 无法安装Pyaudio

python - pyvisa 给出错误,但 linux-gpib 工作

python - 如何将 Unicode 转换为大写进行打印?

python - Django 未将图像文件上传到 Azure 存储容器

python - 在python中查找和替换多个文件中的多个字符串

python - TypeError : string argument without an encoding

python - 打印语句未出现在 GAE 中

java - "Character.toUpperCase"的结果被忽略

sql-server - SQL Server如何将1个字母从小写变为大写?