簡體   English   中英

Pyparsing-從數字到列表的簡單解析

[英]Pyparsing - Simple parsing from numbers into a list

我想做一個簡單的解析器,但是我總是得到一個異常( pyparsing.ParseException: Expected W:(ABCD...), found '6' (at char 3), (line:1, col:4)

例如:如果我有此數據(在.txt中):

Mo:6,8,9
Di:7,5,2
Mi:5,2,6
Do:2,5,6,7
Fr:2,5,7
#
Mo:5,4,8
Di:1,5,6,7
Mi:5,2,1
Do:2,5
Fr:4

我想把這個找回來:

[
    {
        "mo": [6, 8, 9],
        "di": [7, 5, 2]
        #...
    },
    {
        "mo": [5, 4, 8],
        "di": [1, 5, 6, 7],
        #...
    }
]

這是我的代碼:

from pyparsing import Word, alphas
import re

result = []

with open("days.txt") as file:
    content = file.read()
    splitted = content.split("#")

    for split in splitted:
        tmp = {}
        for day in split.split("\n"):
            if day is "" or day is "\n":
                continue
            text_format = Word(alphas) + ":" + Word(alphas)

            parsed_split = text_format.parseString(day)

            weekday = parsed_split[0]
            numbers = re.sub("\s+", "", parsed_split[-1]).split(",")

            tmp[weekday] = numbers

        result.append(tmp)

我想將日期中的數字解析為字典。

6does不適合alphas使用alphanumsnums代替。

text_format = Word(alphas) + ":" + Word(alphanums)

參考: 常見的字符串和標記常量

暫無
暫無

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

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