在 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。
我试图在类似于 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。