在 python 中索引的 █ 个字符串

█ character string indexed in python

我试图在类似于 myString = "███ ███ J ██" 的字符串中获取 'J' 的索引,所以我使用 myString.find('J') 但它 returns 是一个非常高的值如果我用 'M' 或字母表中的另一个字符替换 '█',我会得到一个较低的值。我真的不明白这是什么原因。

尝试myString = u"███ ███ J ██"。这将使它成为一个 Unicode 字符串,而不是 python 2.x 默认的 ASCII 字符串。

如果您是从文件或类似文件的对象中读取它,而不是 file.read(),请执行 file.read().encode('utf-8-sig').

检查编码 运行:python -c 'import sys; print(sys.getdefaultencoding())'

对于 Python 2.x,输出是 ascii,这是您程序的默认编码。为了使用一些非 ascii 字符,开发人员预测了 unicode() 类型。你自己看。只需创建一个变量 myString = u"███ ███ J ██" 并遵循它的 .find('J') 方法。这个 u 前缀告诉解释器它处理 Unicode 编码的字符串。然后你可以像使用普通 str.

一样使用这个变量

我在一些应该写UTF-8的地方使用了Unicode。如需差异,请检查 this great answer

Unicode是Python3.x中的默认编码,所以不会出现这个问题。

检查您正在使用的 console/ssh 客户端的设置。将其设置为 UTF-8。