簡體   English   中英

Pyparsing Unicode 字母

[英]Pyparsing for unicode letters

我需要對 unicode 字符使用 pyparsing。 所以我嘗試了他們的 github 存儲庫中帶有法語字符cédille簡單示例並給出了錯誤。

我的代碼

from pyparsing import Word, alphas
greet = Word(alphas) + "," + Word(alphas) + "!"
hello = "Hello, cédille!"
greet.parseString(hello)

它給出了錯誤

pyparsing.ParseException: Expected "!" (at char 8), (line:1, col:9)

有沒有辦法解決這個問題?

Pyparsing 具有pyparsing_unicode模塊,該模塊定義了許多 unicode 字符范圍,並在每個范圍內定義了alphasnums等。 范圍包括CJKCyrillicDevanagariHebrewArabic等。 示例目錄中的greetingInGreek.pygreetingInKorean.py示例展示了其中的一些操作。

您使用 Latin1 集的示例將如下所示:

from pyparsing import Word, pyparsing_unicode as ppu
intl_alphas = ppu.Latin1.alphas
greet = Word(intl_alphas) + "," + Word(intl_alphas) + "!"
hello = "Hello, cédille!"
print(greet.parseString(hello))

印刷:

['Hello', ',', 'cédille', '!']

alphas8bit可能會保留用於舊版支持,但新應用程序應使用pyparsing_unicode.Latin1.alphas

alphas顯然只是英語/純 ASCII。 以下似乎有效:

from pyparsing import Word, alphas, alphas8bit
greet = Word(alphas+alphas8bit) + "," + Word(alphas+alphas8bit) + "!"
hello = "Hello, cédille!"
greet.parseString(hello)

這是 Unicode,因此字符é沒有什么特別的“8 位”; 但是,如果文檔至少大致正確,我想它仍然會與稍微更具異國情調的重音字符(Latin-1 中不可用的任何字符,例如捷克語或波蘭語重音字符,或者極端嘗試越南語)中斷。

也許探索unicodedata模塊以獲得“字母”字符的正確枚舉,或者找到正確公開此 Unicode 功能的第三方模塊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM