我不太确定regex是如何工作的,但我正试图做一个项目在哪里(还没有设置它,但在pdf代码的pdf索引方面首先与测试pdf工作)来分析标记方案pdf,并基于此做任何有用的数据。
问题是,当我在regex中输入搜索参数时,它不会从pdf中返回任何内容。我正在尝试迭代或遍历每一行开始1 - 2位数字(问题列),然后使用re.compile(r'd{1} [A-D]')
在以下代码中的A-D(答案列):
import re
import requests
import pdfplumber
import pandas as pd
def download_file(url):
local_filename = url.split('/')[-1]
with requests.get(url) as r:
with open(local_filename, 'wb') as f:
f.write(r.content)
return local_filename
ap_url = 'https://papers.gceguide.com/A%20Levels/Biology%20(9700)/2019/9700_m19_ms_12.pdf'
ap = download_file(ap_url)
with pdfplumber.open(ap) as pdf:
page = pdf.pages[1]
text = page.extract_text()
#print(text)
new_vend_re = re.compile(r'd{1} [A-D]')
for line in text.split('n'):
if new_vend_re.match(line):
print(line)
当我运行代码时,我没有得到任何回报。虽然打印文本将打印整个页面。
这是我正在尝试工作的PDF: https://papers.gceguide.com/A%20Levels/Biology%20(9700)/2019/9700_m19_ms_12.pdf
您在数字和标记之间只匹配一个空格,但是如果您查看text
的输出,在数字和标记之间有多个空格。
'9700/12 Cambridge International AS/A Level – Mark Scheme March 2019nPUBLISHED n nQuestion Answer Marks n1 A 1n2 C 1n3 C 1n4 A 1n5 A 1n6 C 1n7 A 1n8 D 1n9 A 1n10 C 1n11 B 1n12 D 1n13 B 1n...
将您的正则表达式更改为以下内容以匹配不仅一个空间:
new_vend_re = re.compile(r'd{1}s+[A-D]')
参见alexpdev的回答,了解new_vend_re.match()
和new_vend_re.search()
的区别。如果在代码中运行此命令,将得到以下输出:
1 A 1
2 C 1
3 C 1
4 A 1
5 A 1
6 C 1
7 A 1
8 D 1
9 A 1
(你也可以在这里看到,总是有两个空格而不是一个)。
//编辑:修复了regex
的错字