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在使用特殊字符时返回错误的字符串长度的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: python输入一组身高_一起学Pyth
- 下一篇: python怎么把图片压缩_使用Pyth