Python unicode字母的语法分析

Python unicode字母的语法分析,python,unicode,pyparsing,Python,Unicode,Pyparsing,我需要对unicode字符使用pyparsing。所以我试着从他们的github存储库中用法语字符cédille给出一个简单的例子,并给出了错误 我的代码 from pyparsing import Word, alphas greet = Word(alphas) + "," + Word(alphas) + "!" hello = "Hello, cédille!" greet.parseString(hello) 它给出了错误 pyparsing.ParseException: Expe

我需要对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)
有办法解决这个问题吗?

alphas显然只是英文/纯ASCII码。以下几点似乎有效:

从pyparsing导入单词、alphas、alphas8bit 问候语=Wordalphas+alphas8bit+,+Wordalphas+alphas8bit+! 你好,塞迪勒! 你好 这是Unicode,所以字符没有特别的8位字符;但是,如果文档至少大致正确,我想它仍然会使用稍微有点异国情调的重音字符——拉丁语-1中没有的任何字符,比如捷克语或波兰语重音字符,或者走极端,尝试越南语

也许可以浏览unicodedata模块以获得正确的字母字符枚举,或者找到适当公开此Unicode功能的第三方模块。

alphas显然仅为英语/纯ASCII。以下几点似乎有效:

从pyparsing导入单词、alphas、alphas8bit 问候语=Wordalphas+alphas8bit+,+Wordalphas+alphas8bit+! 你好,塞迪勒! 你好 这是Unicode,所以字符没有特别的8位字符;但是,如果文档至少大致正确,我想它仍然会使用稍微有点异国情调的重音字符——拉丁语-1中没有的任何字符,比如捷克语或波兰语重音字符,或者走极端,尝试越南语

可以浏览Unicode数据模块以获得字母字符的正确枚举,也可以查找正确公开此Unicode功能的第三方模块。

Pyparsing具有Pyparsing_Unicode模块,该模块定义了许多Unicode字符范围,并在每个范围内定义了字母、NUM等。范围包括CJK、西里尔语、德瓦纳加里语、希伯来语、阿拉伯语和其他语言。examples目录中的greetingreek.py和greetingInKorean.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。

pyparsing具有pyparsing_unicode模块,该模块定义了许多unicode字符范围,并在每个范围内定义了字母、NUM等。范围包括CJK、西里尔语、德瓦纳加里语、希伯来语、阿拉伯语和其他语言。examples目录中的greetingreek.py和greetingInKorean.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可能会保留下来用于传统支持,但新的应用程序应该使用PyUnicode.Latin1.alphas。

alphas似乎只是纯ASCII。有一个定义alphas8bit,它要么命名错误,要么也没有帮助。alphas8bit可追溯到Python2早期,当时设置了位为8的128-255个alpha字符,因此添加了名称。alphas似乎只是纯ASCII。有一个定义alphas8bit,它要么命名错误,要么没有帮助。alphas8bit可以追溯到早期的Python2时代,当时设置了128-255个alpha字符,并设置了位8,因此添加了名称。的确,你好,cǔdille!还是给了我一个回溯。请看一些方法,或者其他一些想法。我认为可以根据我的建议修改接受的答案,但我没有进行适当的研究。在python 2.7中,仍然会出现错误pyparsing.ParseException:预期!,在字符9的第1行第10列找到“\xa9”.的确,你好,cǔdille!还是给了我一个回溯。请看一些方法,或者其他一些想法。我认为可以根据我的建议修改接受的答案,但我没有进行适当的研究。在python 2.7中,仍然会出现错误pyparsing.ParseException:预期!,在Python2.7中的字符9,第1行,第10列找到“\xa9”,这仍然会导致错误pyparsing.ParseException:预期!,在char 9第1行第10列找到“\xa9”,看起来您忘记声明源文件的编码,或者未能将字符串标记为Unicode字符串。在python 2.7中,这仍然会导致pyparsing错误。ParseException:预期!,在char 9第1行第10列找到“\xa9”,看起来您忘记声明源文件的编码,或者未能将字符串标记为Unicode字符串。