2015-04-04 43 views
0

我從文件中讀取的問答題和答案在UTF-8編碼,但答案可以由相同的文本1個字節符號(英文)和2點字節的符號(俄羅斯):如何使用混合1字節和2字節符號來訪問字符串?

"best car тайота"` 

我需要用"*"代替回答,所以它看起來像"**** *** ******"來幫助猜測答案是什麼。爲了確定長度我用

len(answer.decode('utf-8')) 

但是,當我想告訴一些符號像"b*s* ca* *а*от*",我可以通過answer[index]訪問1個字節的符號,但我看不懂這樣的2個字節符號的下一個提示,這就是爲什麼我得到"b*s* ca*"沒有2字節的符號。

是否有解決方案?

回答

3

將字符串解碼爲一個Unicode值一次,並在那做替換。

A unicode字符串對象支持與字節字符串相同的操作;在混合字節串和Unicode字符串時要小心,因爲這可能會觸發自動編碼或解碼(導致出現UnicodeEncodeUnicodeDecode錯誤)。打印字符串應自動編碼該值以匹配您的終端編解碼器。

您可能需要Python和Unicode的讀了起來:由斯內德爾德

  • The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)由Joel Spolsky的