Python正则表达式文本到json脚本,以获取同一单词出现之间的所有文本?

2024-04-19 03:03:34 发布

您现在位置:Python中文网/ 问答频道 /正文

您好,我正在编写一个python正则表达式解析器,我正在尝试编写一个正则表达式,它在大量文本中的单词QUESTION之间选择文本

示例文本

Exam A
QUESTION 1
Blank is designed to help users.
A. baba.
B. caca.
C. sasa.
D. tyty.
Correct Answer: D
Explanation
Explanation/Reference:
QUESTION 2
can I do something?
A. No
B. Yes
Correct Answer: C
Explanation
Explanation/Reference:
QUESTION 3
What does provide?
asdasdasd


import re
import os
import sys


questions_file_text = open("questionguide.txt", "r").read()


Questions = re.findall("(?:(?!QUESTION).|[\n\r])*QUESTION",questions_file_text)

因此,我想选择所有内容,包括问题编号,直到下一个问题出现。通过这种方式,我可以进行一些文本解析,将其格式化为json

我会做python,只是我的正则表达式有点不对劲,有人能帮我吗

MyQuestion 这是我见过的最酷的一次 enter image description here


Tags: textanswer文本importre解析器示例单词
2条回答

好吧,我很笨,答案如下:

import re
import os
import sys


questions_file_text = open("guide.txt", "r").read()


Questions = re.findall("(QUESTION([\s\S]*?)QUESTION)",questions_file_text)

print Questions

如果您使用QUESTION([\s\S]*?)QUESTION,您将错过每隔一个Question,因为下一个Question将与上一个正则表达式匹配一起使用

你可以用

re.findall(r"QUESTION.*?(?=QUESTION|$)",questions_file_text, re.S)

regex demo。您还可以捕获各个部分:

re.findall(r"QUESTION\s+(\w+)\s*(.*?)(?=QUESTION|$)",questions_file_text, re.S)

another regex demo

正则表达式详细信息

  • QUESTION-一个{}字
  • \s+-1+空格字符
  • (\w+)-组1:一个或多个单词字符
  • \s*-0+空格
  • (.*?)-第2组:任何0+字符,尽可能少
  • (?=QUESTION|$)-直到QUESTION或字符串结尾

相关问题 更多 >