2

私は自分の .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列目は空白ですね。

それで、何が問題なのですか?

ありがとう!

4

1 に答える 1

3

nums文字列に等しい'0123456789'。だから定義

columnList = Group(delimitedList(nums))

acolumnListはコンマで区切られた文字列のリストであり、各文字列は文字通り'0123456789'.

代わりに、文字列 の文字で構成される「単語」のコンマ区切りのリストに一致させるには、次numsを使用しますWord(nums)

integer = Word(nums)
columnList = Group(delimitedList(integer))
于 2011-08-21T13:44:47.410 に答える