-
Notifications
You must be signed in to change notification settings - Fork 3
/
main_logic.py
86 lines (72 loc) · 2.32 KB
/
main_logic.py
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
"""
This is main module with all the logic
for correctUA bot
"""
import re
def get_dictionary(path):
"""
Get dictionary from csv
"""
with open(path, mode='r') as infile:
dict_wrong_right = {}
for line in infile:
line = line.split("\t")
dict_wrong_right[line[0]] = line[1].strip()
return dict_wrong_right
def correct_msg(messages):
"""
Correct a message
"""
path = "correctorUA/lexic_mistakes.csv"
data = get_dictionary(path)
corrected = messages
for key in data:
pattern = rf'[^а-яА-Яіїє]{key}[^а-яА-Яіїє]|[^а-яА-Яіїє]{key}$|^{key}[^а-яА-Яіїє]|^{key}$'
if re.findall(pattern, corrected):
ind_b = corrected.index(key)
ind_e = ind_b + len(key)
temp = corrected[:ind_b]
temp += data[key]
temp += corrected[ind_e:]
corrected = temp
return corrected
def check_conjunctions(sentence: str) -> list or None:
"""
Returns the list of messages about a punctuation error
with conjunctions if there is one.
"""
sentence = sentence.lower()
conjunctions = {'а', 'але', 'однак', 'проте', 'зате', 'хоч', 'хоча'}
errors = []
for word in conjunctions:
pattern = rf'^.*[^,] {word}(([^\w].*)|$)'
if re.fullmatch(pattern, sentence):
errors.append(f'️❗ Перед "{word}" повинна стояти кома.')
if errors:
return errors
return None
def check_for_mistake(messages):
"""
Returns mistakes with corrections
"""
res = []
path = "correctorUA/lexic_mistakes.csv"
data = get_dictionary(path)
messages = messages.lower()
for key in data:
pattern = rf'[^а-яА-Яіїє]{key}[^а-яА-Яіїє]|[^а-яА-Яіїє]{key}$|^{key}[^а-яА-Яіїє]|^{key}$'
if re.findall(pattern, messages):
res.append(f"❌ {key}\n✔️ {data[key]}")
return res
# def check_for_mistake(messages):
# '''
# Returns mistakes with corrections
# '''
# res = []
# path = "correctorUA/lexic_mistakes.csv"
# data = get_dictionary(path)
# messages = messages.lower()
# for key in data:
# if (key in messages):
# res.append(f"❌ {key}\n✔️ {data[key]}")
# return res