欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > python >内容正文

python

python 返回字符串长度_Python在使用特殊字符时返回错误的字符串长度

发布时间:2025/4/5 python 57 豆豆
生活随笔 收集整理的这篇文章主要介绍了 python 返回字符串长度_Python在使用特殊字符时返回错误的字符串长度 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

我有一个字符串’aúlt,我想根据字符位置获得操作的长度等等.问题是第一个ë被计算两次,或者我猜ë在位置0并且’在位置1.

在Python中是否有任何可能的方法让像ë被表示为1?

我正在使用UTF-8编码来输出它的实际代码和网页.

编辑:只是为什么我需要这样做的背景.我正在研究一个将英语翻译成Seneca(一种美洲原住民语言)的项目,并且显示了很多.某些单词的某些重写规则需要知道字母位置(本身和周围的字母)和其他特征,例如重音和其他变音符号.

解决方法:

UTF-8是一种unicode编码,它对特殊字符使用多个字节.如果你不想要编码字符串的长度,那么简单解码它并在unicode对象上使用len()(而不是str对象!).

这里有些例子:

>>> # creates a str literal (with utf-8 encoding, if this was

>>> # specified on the beginning of the file):

>>> len('ë́aúlt')

9

>>> # creates a unicode literal (you should generally use this

>>> # version if you are dealing with special characters):

>>> len(u'ë́aúlt')

6

>>> # the same str literal (written in an encoded notation):

>>> len('\xc3\xab\xcc\x81a\xc3\xbalt')

9

>>> # you can convert any str to an unicode object by decoding() it:

>>> len('\xc3\xab\xcc\x81a\xc3\xbalt'.decode('utf-8'))

6

当然,您也可以像访问str对象一样访问unicode对象中的单个字符(它们都是从basestring继承的,因此具有相同的方法):

>>> test = u'ë́aúlt'

>>> print test[0]

ë

如果您开发本地化应用程序,通常最好在内部使用unicode对象,通过解码您获得的所有输入.完成工作后,您可以将结果再次编码为“UTF-8”.如果你坚持这个原则,你将永远不会看到你的服务器崩溃,因为你可能会得到任何内部的UnicodeDecodeErrors;)

PS:请注意,str 3和unicode数据类型在Python 3中发生了显着变化.在Python 3中,只有unicode字符串和普通字节字符串不能再混合使用.这应该有助于避免使用unicode处理时常见的陷阱……

问候,

克里斯托夫

标签:python,character-encoding

来源: https://codeday.me/bug/20190926/1818400.html

总结

以上是生活随笔为你收集整理的python 返回字符串长度_Python在使用特殊字符时返回错误的字符串长度的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。