Python regex帮助捕获一组大写字母



我试图从一些PDF文件中捕获股票代码,特别是寻找一行5个大写字母的分组(以下是PDF的截图示例)。我已经让我的代码为大多数pdf工作,但我遇到了一个特别的文件的麻烦。

从附加的图像,我的目标是获得WFBFX, PRHIX, BBCPX等的结果在一个列表中。我的代码如下,我一直收到一个空白输出。现在的想法是,代码刮除PDF,找到括号中大写字母的分组,创建一个列表,并输出该列表:

import pandas as pd
import PyPDF2
import re
import tqdm
import itertools
pdf_file = open(r'C:UserscummansJareds_codePythonPDF ScrapePDF FilesRJ Rec List.pdf', 'rb')
pdf_reader = PyPDF2.PdfFileReader(pdf_file)
pdf_reader.numPages
ticker_ls = []
for i in range(pdf_reader.numPages):
page_obj = pdf_reader.getPage(i)
txt =page_obj.extractText()
ls1 = re.findall("([A-Z]{5})", txt)
ticker_ls.append(ls1)

check = list(itertools.chain(*ticker_ls))
clean_ticker_ls = list(dict.fromkeys(check))
clean_ticker_ls

对于正则表达式,我还尝试了下面这行,除了这行,它在大多数地方都适用。

ls1 = re.findall("((.{5}))", txt)

任何帮助或提示将不胜感激。

我想你已经很接近了

import PyPDF2
import re
pdf_reader = PyPDF2.PdfFileReader('C:UserscummansJareds_codePythonPDF ScrapePDF FilesRJ Rec List.pdf')
ticker_ls = []
for page_obj in pdf_reader.pages:
txt = page_obj.extractText()
ls1 = re.findall("([A-Z]{5})", txt)
ticker_ls.extend(ls1)
print(ticker_ls)

最新更新