False
можно писать 0
, а вместо True
писать 1
-- и код будет работать одинаково.bool
на основе класса int
.0
в каких-то операциях эквивалентен True
, что удивляет многих бывалых программистов при знакомстве с этим языком. в Python асинхронщину завезли недавно (3 года назад)
Проект умирает, давно не было релизов
import re
def get_substrings(string):
return re.split('\W+', string)
def get_string_with_any_number(string):
return re.sub(r'\d+', '_n_', string)
def get_distance(s1, s2):
d, len_s1, len_s2 = {}, len(s1), len(s2)
for i in range(-1, len_s1 + 1):
d[(i, -1)] = i + 1
for j in range(-1, len_s2 + 1):
d[(-1, j)] = j + 1
for i in range(len_s1):
for j in range(len_s2):
if s1[i] == s2[j]:
cost = 0
else:
cost = 1
d[(i, j)] = min(
d[(i - 1, j)] + 1,
d[(i, j - 1)] + 1,
d[(i - 1, j - 1)] + cost)
if i and j and s1[i] == s2[j - 1] and s1[i - 1] == s2[j]:
d[(i, j)] = min(d[(i, j)], d[i - 2, j - 2] + cost)
return(d[len_s1 - 1, len_s2 - 1])
def check_substring(search_request, original_text, max_distance, any_number):
if any_number:
search_request = get_string_with_any_number(search_request)
original_text = get_string_with_any_number(original_text)
substring_list_1 = get_substrings(search_request)
substring_list_2 = get_substrings(original_text)
not_found_count = len(substring_list_1)
for substring_1 in substring_list_1:
for substring_2 in substring_list_2:
if get_distance(substring_1, substring_2) <= max_distance:
not_found_count -= 1
if not_found_count <= 0:
return True
search_request = 'трубок использовали для прожигания _n_м'
original_text = 'трубок использовали для прожигания стальковша.Замена воронки 18м 8сл. Разлита полностью'
result = check_substring(search_request, original_text, max_distance=2,
any_number=True)
print(result)
string = 'Рост 180см, вес 90кг'
new_string = re.sub(r'\d+', '_n_', string)
substrings = re.findall(r'\d[\w]+', string)
substring_pairs = []
for substring in substrings:
new_substring = re.sub(r'\d+', '_n_', substring)
substring_pair = substring, new_substring
substring_pairs.append(substring_pair)
new_string = string
for old, new in substring_pairs:
new_string = re.sub(old, new, new_string)
print(new_string)
Рост _n_см, вес _n_кг