Python将文本和组解析成不同的部分

时间:2013-11-25 15:37:22

标签: python regex parsing

我的文字如下

  1. 这是第一个问题,可以转到多个段落。 多行。等
    (1)第一选择权(2)第二选择权(3)第三选择权(4)第四选择权(5)这些都不是

  2. 8×? = 4888÷4
    (1)150.75(2)125.75(3)125.05(4)152.75(5)这些都不是

  3. (62.5×14×5)÷25 + 41 =
    (1)4(2)5(3)9(4)8(5)6

  4. (23×23×23×23×23×23)×
    (1)32(2)30(3)9(4)7(5)11

  5. 我想将其解析为不同的部分,以便我可以迭代for循环并获取每个问题并迭代每个答案。 规则是每个问题都以一行(^)开头的整数开头,然后是一个点。答案将以括号(1-5)括起来的整数1到5作为前缀。

    我希望解析后的数据可以代表:

    for item in parsed_data:
        print item.text
        for answer in item.answers:
            print answer.text
    

    如何使用python regex做到这一点?

1 个答案:

答案 0 :(得分:1)

老实说,你可以使用re.split()

#text is the variable with your text
text = text.strip()
questions = re.split(r'\d+\.',text)
questions = [x.strip() for x in questions if x != '']
final = [re.split(r'\(\d+\)',x) for x in questions]

for part in final:
    question = part[0]
    print question
    for answer in part[1:]:
        print answer