-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathFindingPosition.py
More file actions
101 lines (71 loc) · 2.28 KB
/
FindingPosition.py
File metadata and controls
101 lines (71 loc) · 2.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
import os
import pickle
import pypdf
from PyQt6.QtCore import QThread, pyqtSignal
from result import Result
class ReadFile(QThread):
error = pyqtSignal(int)
def __init__(self, filePath: str):
super().__init__()
self.filePath = filePath
def run(self):
try:
# with open(self.filePath, 'rb') as pdfRawFile:
pdfReader = pypdf.PdfReader(self.filePath)
except OSError:
self.error.emit(-1)
except FileNotFoundError:
self.error.emit(-2)
except Exception as e:
print(e)
self.error.emit(-3)
else:
# printing number of pages in pdf file
pages = len(pdfReader.pages)
# print(type(pdfReader.pages))
totalpages = f"Total number of pages in PDF: {pages}"
extracted_text = []
with open("Result.pickle", "wb") as R_txt:
for i in range(pages):
# creating a page object
pageObj = pdfReader.pages[i]
text = pageObj.extract_text()
extracted_text.append(text)
pickle.dump(extracted_text, R_txt)
class Analyze(QThread):
result = pyqtSignal(list)
def __init__(self, obtMarksNum: int, totalNumbers: int):
super().__init__()
self.obtMarksNum = obtMarksNum
self.totalNumbers = totalNumbers
def run(self):
result = Result()
line = "1 ahead........"
numb = []
# pickle_obj = []
# path = os.path.join(os.getcwd(), "Result.pickle")
with open("Result.pickle", "rb") as file:
pickle_obj = pickle.load(file)
words = []
for w in pickle_obj:
words.append(w.split())
# print(words)
for number in range(self.obtMarksNum + 1, self.totalNumbers):
toSearch1 = "(" + str(number) + ")"
toSearch2 = "(" + str(number) + "+"
toSearch3 = "(" + str(number) + "^"
for worde in words:
# print(word)
for word in worde:
if word.find(toSearch1) != -1 or word.find(toSearch2) != -1 or word.find(toSearch3) != -1:
output = str(line) + " Scoring: "+ str(number) + " having " + str(round(((number/self.totalNumbers)*100),2)) + ' %.'
# print(output)
result.results.append(output)
line = "1 more ahead..."
result.noOfNumber += 1
if number in numb:
pass
else:
numb.append(number)
result.position = len(numb) + 1
self.result.emit([result])