gpt4 book ai didi

python - 使用 pyparsing 有什么问题

转载 作者:太空宇宙 更新时间:2023-11-04 01:38:52 26 4
gpt4 key购买 nike

我写这个是为了解析我自己的 .dotf 文件:

def parseFromDOTF(file_path):
comment = "%" + restOfLine
typeToken = CaselessKeyword("@TYPE")
attrToken = CaselessKeyword('@ATTRIBUTE')
ident = Word(alphas,alphanums)
type = Suppress(typeToken) + ident
columnList = Group(delimitedList(nums))
attribute = Group(Suppress(attrToken) + ident("attribute") + columnList("column"))
DOTF = type('type') + OneOrMore(attribute)("attributes")
DOTF.ignore(comment)
return DOTF.parseFile(file_path)

下面是 .dotf 文件的示例

%a comment  
@TYPE NORMAL
@ATTRIBUTE id 0
@ATTRIBUTE values 1,2,3,4
@ATTRIBUTE class 5

但是有一点不对:

pyparsing.ParseException: Expected "0123456789" (at char 79), (line:3, col:15)

第 3 行的第 15 列是一个空格,不是吗?

那么,怎么了?

谢谢!

最佳答案

nums 等于字符串 '0123456789'。所以定义

columnList = Group(delimitedList(nums))

告诉 pyparsing columnList 应该是逗号分隔的字符串列表,每个字符串字面上都是 '0123456789'

要改为匹配由字符串 nums 中的字符组成的以逗号分隔的“单词”列表,请使用 Word(nums):

integer = Word(nums)
columnList = Group(delimitedList(integer))

关于python - 使用 pyparsing 有什么问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7138378/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com