Python:什么是String [a:b]的等价物,但是对于Unicode

Pri*_*uza 2 python string unicode string-formatting

所以我有这样的事情:

x = "C???"
x[:len(x)-1]
Run Code Online (Sandbox Code Playgroud)

这是从字符串中删除最后一个字符.但它不起作用,它给了我一个错误.我认为这是因为它是Unicode.那么如何在非ansi字符串上进行这种简单的格式化呢?

phi*_*hag 6

那是因为在Python 2.x中"C???",编写字节串是一种奇怪的方式b'C\xd0\x95\xd0\x9c\xd0\xac'.

你想要一个字符的字符串.在Python 2.x中,字符串以前缀为u:

x = u"C???"
x[:-1] # Returns u"C??" (len(x) is implicit for negative values)
Run Code Online (Sandbox Code Playgroud)

如果您在程序中编写此代码(而不是交互式shell),则需要指定源代码编码.要做到这一点,只需将以下行添加到文件的开头,其中utf-8匹配您的文件编码:

# -*- coding: utf-8 -*-
Run Code Online (Sandbox Code Playgroud)