Я пытаюсь найти акции / компании, упомянутые в пачке документов PDF.Иногда используется название компании (например, American Express), в других случаях PDF содержит только символ акций (например, AXP).
Я довольно легко могу найти символы с помощью этого кода:
import PyPDF2
import os
import re
tickers = ['AMZN', 'V', 'ETSY', 'AXP', 'AA', 'FB']
source_dir = '/Users/person/folder/'
for dir, subdir, files in os.walk(source_dir):
for file in files:
if file.endswith('.pdf'):
file = os.path.join(dir, file)
pdfFileObj = open(file, 'rb')
pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
if pdfReader.isEncrypted:
print("Skipping " + file)
pass
else:
num_pages = pdfReader.numPages
count = 0
text = " "
while count < num_pages:
pageObj = pdfReader.getPage(count)
count += 1
text += pageObj.extractText()
print("\n" + file)
# print(text)
matches = re.findall(regex, text)
matches = list(dict.fromkeys(matches))
for match in matches:
print("- " + match)
Но иногда в PDF-файлах упоминается только название компании.Как мне найти или тикер акций или название компании, а затем вернуть оба?Таким образом, желаемый результат будет:
/Users/person/folder/file.pdf
- AMZN (Amazon)
- AXP (American Express)
- AA (American Airlines)
- V (Visa)
У меня есть CSV-файл, который сопоставляет тикер с названием компании, но я открыт для создания базы данных или словаря, если это облегчит задачу.
Вот пример данных тикера / названия компании:
| Ticker | Company Name |
-----------------------------
| AMZN | Amazon Inc |
-----------------------------
| V | Visa Inc. |
-----------------------------
| ETSY | Etsy |
-----------------------------
| AXP | American Express |
-----------------------------
| AA | American Airlines |
-----------------------------
| FB | Facebook |
-----------------------------
А вот пример текста:
- Etsy (ETSY): Etsy do eiusmod tempor incid is Duis aute irure Etsy dolor in reprehenderit in volup
- AXP: Excepteur sint occaecat cupidatat non proident, sunt in culpa AXP deserunt
- AA: American Airlines id est laborum.
- V: enim ad minim veniam (V) est.
Как мне решить эту проблему?