female_names = (
'Елена', 'Анна', 'Татьяна',
...
)
def make_stat(filename):
stat = {}
...
if bool(female_names.__contains__(name)):
if bool(stat.__contains__(name)):
stat[name] += 1
else:
stat[name] = 1
__contains__ -> in
лишний bool
tuple -> set
dict -> defaultdict
FEMALE_NAMES = {
'Елена', 'Анна', 'Татьяна',
...
}
def make_stat(filename):
stat = defaultdict(int)
...
if name in female_names:
stat[name] += 1
bool_male = set("ая").__contains__(
inp[-1]) is False and gender is False \
and first_check is False and inp != "Любовь"
bool_male = (
set("ая").__contains__(inp[-1]) is False
and gender is False
and first_check is False
and inp != "Любовь"
)
bool_male = (
inp[-1] not in set("ая")
and ...
)
bool_male = (
inp[-1] not in "ая"
and ...
)
%timeit e in set("aя")
%timeit e in {"a", "я"}
%timeit e in "aя"
153 ns ± 1.29 ns per loop ...
24.4 ns ± 0.482 ns per loop ...
29.2 ns ± 0.242 ns per loop ...
def fix_name(name):
if name == "Артем":
name = "Артём"
elif name == "Федор":
name = "Фёдор"
elif name == "Алена":
name = "Алёна"
return name
def fix_name(name):
return name.replace('ё', 'е')
def fix_name(name):
return {
"Артем": "Артём",
"Федор": "Фёдор",
"Алена": "Алёна",
}.get(name, name)
class Parser(object):
...
if name not in not_female_names:
...
for item in years:
if item[0].isdigit():
stat[item] = {'male': [], 'female': []}
y = item
else:
if item.split()[1] in male_names:
stat[y]['male'].append(item)
else:
stat[y]['female'].append(item)
def get_links(page):
link_rex = re.compile(
r"[\"']/wiki/([^#:]+?)[\"'].*?"
)
return link_rex.findall(page)
def main():
...
for p in pages:
links = get_links(p)
...
LINK_REX = re.compile(
r"[\"']/wiki/([^#:]+?)[\"'].*?"
)
def get_links(page):
return LINK_REX.findall(page)