2
我正在爲Unicode文本編寫一個詞法分析器。許多Unicode字符需要多個代碼點(即使在規範組合之後)。例如,tuple(map(ord, unicodedata.normalize('NFC', 'ā́')))
評估爲(257, 769)
。我怎麼知道兩個角色之間的界限?另外,我想存儲文本的非標準化版本。我的輸入保證是Unicode。給定一個Unicode代碼點列表,如何將它們拆分爲一個Unicode字符列表?
到目前爲止,這是我所:
from unicodedata import normalize
def split_into_characters(text):
character = ""
characters = []
for i in range(len(text)):
character += text[i]
if len(normalize('NFKC', character)) > 1:
characters.append(character[:-1])
character = character[-1]
if len(character) > 0:
characters.append(character)
return characters
print(split_into_characters('Puélla in vī́llā vīcī́nā hábitat.'))
這不正確打印如下:
['P', 'u', 'é', 'l', 'l', 'a', ' ', 'i', 'n', ' ', 'v', 'ī', '́', 'l', 'l', 'ā', ' ', 'v', 'ī', 'c', 'ī', '́', 'n', 'ā', ' ', 'h', 'á', 'b', 'i', 't', 'a', 't', '.']
我希望它打印以下:
['P', 'u', 'é', 'l', 'l', 'a', ' ', 'i', 'n', ' ', 'v', 'ī́', 'l', 'l', 'ā', ' ', 'v', 'ī', 'c', 'ī́', 'n', 'ā', ' ', 'h', 'á', 'b', 'i', 't', 'a', 't', '.']
哦,甜美。這兩個都有相當寬鬆的許可證。完善!謝謝! –