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
- 下一篇: 奇瑞瑞虎8+pro的玻璃水多久需要加?