class KiloNum:
def __init__(self, value, round_val=None):
if any([isinstance(value, float), isinstance(value, int)]):
if round_val is None:
round_val = 3
self.round_val = round_val
self.value = value
self.kilo = self.make_value(3)
self.mega = self.make_value(6)
self.giga = self.make_value(9)
def make_value(self, key):
numbers = {3: 'K',
6: 'M',
9: 'G'}
return ''.join([str(round(self.value / 10 ** key, self.round_val)), numbers[key]])
def __repr__(self):
return f'{myvalue.kilo},\n{myvalue.mega},\n{myvalue.giga}'
myvalue = KiloNum(34500101112)
print(myvalue)
print(myvalue.giga)
import re
from pprint import pprint
def replace_old_struct(struct):
changes = {'struct<': 'dict(',
'array<': 'list(',
'>': ')',
':': ': ',
',': ', '}
for key in changes:
struct = struct.replace(key, changes[key])
return struct
def set_mark(struct, patterns):
for pattern in patterns:
regex = re.compile(pattern)
words = set(regex.findall(struct))
for word in words:
repl = f"'{word}'"
struct = struct.replace(word, repl)
return struct
def pair_rbracket(struct: str, rbracket):
counter = 0
for number, symbol in enumerate(struct):
if symbol == '(':
counter += 1
elif symbol == ')':
counter -= 1
if counter < 0:
return struct[:number] + rbracket + struct[number + 1:]
def pair_lbracket(struct, lbracket):
return f'{lbracket}{struct[1:]}'
def pair_brackets(struct, struct_type='dict'):
changes = {'dict': {'(': '{', ')': '}'},
'list': {'(': '[', ')': ']'}}
lbracket = changes[struct_type]['(']
rbracket = changes[struct_type][')']
if struct[0] == '(':
struct = pair_lbracket(struct, lbracket)
struct = pair_rbracket(struct, rbracket)
return struct
def set_struct(struct, struct_type):
structs = struct.split(struct_type, 1)
structs[1] = pair_brackets(structs[1], struct_type)
return ''.join(structs)
def replace_struct(struct, struct_type):
for _ in range(struct.count(struct_type)):
struct = set_struct(struct, struct_type)
return struct
if __name__ == '__main__':
data = ('food',
'struct<Milk:array<struct<id:string,type:string>>,Oil:string,batter:array<struct<id:string,type:string>>>')
my_struct = data[1]
patterns = [r"([\w]+)\:", r"\: ([\w]+)\)"]
struct = set_mark(replace_old_struct(my_struct), patterns)
struct_types = ['dict', 'list']
for struct_type in struct_types:
struct = replace_struct(struct, struct_type)
struct = eval(struct)
pprint(struct)
os.environ['WDM_LOG_LEVEL'] = '0'
warnings.filterwarnings("ignore", category=DeprecationWarning)
chrome_options = Options() chrome_options.add_argument('--headless')
browser = webdriver.Chrome(ChromeDriverManager(print_first_line=False).install(), options=chrome_options)
def print_unic_elements(arr):
[print(i) for i in set(arr) if arr.count(i) == 1]
data = {1448413438: dict(id=1448413438, access_hash=8335995624985435932, title='N', broadcast=True, megagroup=False)}
keys = [*data.keys()]
print(data[keys[0]])
A = """
A
A A
A A
AAAAA
A A
A A
A A
"""
B = """
BBBB
B B
B B
BBBB
B B
B B
BBBB
"""
C = """
CCC
C C
C
C
C
C C
CCC
"""
D = """
DDDD
D D
D D
D D
D D
D D
DDDD
"""
E = """
EEEEE
E
E
EEE
E
E
EEEEE
"""
F = """
FFFFF
F
F
FFF
F
F
F
"""
import alphabet_ascii as alfabet_ascii
alph = {'A':alfabet_ascii.A,
'B': alfabet_ascii.B,
'C': alfabet_ascii.C,
'D': alfabet_ascii.D,
'E': alfabet_ascii.E}
def make_symbols(symbols):
lines = []
for number, _ in enumerate(alph['A'].splitlines()):
line = [alph[symbol].splitlines()[number] for symbol in symbols]
line = ' '.join(line)
lines.append(line)
text = '\n'.join(lines)
return text
print(make_symbols('ABCDE'))
components=[row]
лишние квадратные скобки. create_actionrow(btns)
должна возвращать другой тип (сейчас возвращает список чего-то, надо посмотреть внимательно). data = '''
<div class="catalog-grid catalog-grid_unpadding-mobile catalog-grid_by3 rightside ">
<div class="catalog-grid__item"><article class="product-snippet"itemscope itemprop="itemListElement" itemtype="http://schema.org/Product" >
<button class="product-snippet__favorite product-card__favorite product-card__favorite"
data-id="124852">
<span>
<svg width="24" height="24">
<use xlink:href="/static/local/assets/sprite.svg?v=4#heart"></use>
</svg>
</span> <span class="product-card__favorite_bin">
<svg width="24" height="24">
<use xlink:href="/static/local/assets/sprite.svg?v=4#bin"></use>
</svg>
</span> </button>
<!-- TOP PART -->
<div class="product-snippet__top">
<div class="product-snippet__right">
<meta itemprop="sku" content="124852"> <span itemprop="brand" itemscope itemtype="http://schema.org/Brand">
<meta itemprop="name" content="Colterenzio"> </span>
<!-- ID -->
<div class="product-snippet__id" data-value-group-id="132655"
data-value-id="108038">
<span>Артикул:</span>
124852 </div>
<!-- #ID -->
<!-- RATINGS -->
<div class="product-snippet__ratings">
<!-- STARS -->
<div class="product-snippet__ratings-item">
<svg width="12" height="12">
<use xlink:href="/static/local/assets/sprite.svg?v=4#star"></use>
</svg>
<span>4.8</span>
</div>
<!-- #STARS -->
<!-- GREEN SELECTIONS -->
<!-- #GREEN SELECTIONS -->
</div>
<!-- #RATINGS -->
<!-- NAME -->
<a href="/catalog/product/colterenzio_pfefferer_2020_075/"
data-page="1"
data-value-group-id="132655"
data-value-id="108038"
class="product-snippet__name js-dy-slot-click">
Вино Pfefferer, Colterenzio, 2020 г. </a>
<meta itemprop="name" content="Вино Pfefferer, Colterenzio, 2020 г."> <!-- #NAME -->
<!-- DESC -->
<div class="product-snippet__desc">
<a href="/catalog/vino/filter/country-italiya/">Италия</a>, <a href="/catalog/vino/filter/color-beloe/">белое</a>, <a href="/catalog/vino/filter/sugar_type-polusukhoe/">полусухое</a>, <a href="/catalog/vino/filter/volume-0_75/">0.75 л.</a> </div>
<!-- #DESC -->
<!-- DETAIL -->
<div class="product-snippet__detail">
<div class="tag-stock product-snippet__stock-part">
<div class="tag-stock__buy-price-sale-link">
<div class="tag-stock__icon-wrap">
<span class="tag-stock__buy-price-sale-icon">
<svg width="19" height="19">
<use xlink:href="/static/local/assets/sprite.svg?v=4#sale"></use>
</svg>
</span> <div class="tag-stock__alert">
<div class="tag-stock__alert-title">Вы обратились по адресу: у нас такого много</div>
<p class="tag-stock__alert-descr">
</p>
<div class="tag-stock__alert-link-wrap">
<a class="tag-stock__alert-link" href="/stock/vy-obratilis-po-adresu-u-nas-takogo-mnogo/"
>
Подробнее</a>
</div>
</div>
</div>
<span class="tag-stock__buy-price-sale-text">Участвует в акции</span>
</div>
</div>
<!-- INFO -->
<div class="product-snippet__info">
<div class="product-snippet__info-item">
<span class="product-snippet__info-title">Страна:</span>
<a href="/catalog/vino/filter/country-italiya/">Италия</a>
</div>
<div class="product-snippet__info-item">
<span class="product-snippet__info-title">Цвет:</span>
<a href="/catalog/vino/filter/color-beloe/">белое</a>
</div>
<div class="product-snippet__info-item">
<span class="product-snippet__info-title">Сахар:</span>
<a href="/catalog/vino/filter/sugar_type-polusukhoe/">полусухое</a>
</div>
<div class="product-snippet__info-item">
<span class="product-snippet__info-title">Объем:</span>
<a href="/catalog/vino/filter/volume-0_75/">0.75 л.</a>
</div>
<div class="product-snippet__info-item">
<span class="product-snippet__info-title">Виноград:</span>
<a href="/catalog/vino/filter/grape-muskat_zheltyy/">мускат желтый 100%</a> </div>
<div class="product-snippet__info-item">
<span class="product-snippet__info-title">Производитель:</span>
<a href="/catalog/vino/filter/manufacturer-colterenzio/">Colterenzio</a>
</div>
<div class="product-snippet__info-item">
<span class="product-snippet__info-title">Регион:</span>
<a href="/catalog/vino/filter/region-trentino_alto_adidzhe/">Трентино-Альто Адидже</a>
</div>
<div class="product-snippet__info-item">
<span class="product-snippet__info-title">Стилистика:</span>
белое - яркое, из ароматических сортов винограда </div>
</div>
'''
from bs4 import BeautifulSoup
soup = BeautifulSoup(data, 'html5lib')
product_data = soup.find(class_="product-snippet__info") # выбрал этот класс, так как именно в нём отображена модель объекта - это видно глазами.
# там внутри однотипные элементы, и их будем далее перебирать.
title = []
for number, item in enumerate(product_data): # тут enumerate не обязательно, я его поместил, чтобы когда буду разбираться, смотреть, к какому полю из полей product_data по номеру обращается скрипт. Можно убрать number и enumerate.
product_tds = item.find("a") # нахожу следующий тег <a>
if hasattr(product_tds, 'text'): # среди найденных объектов у некоторых есть атрибут «text», у других его нет. Где его нет - пропускаем, где есть - складываем в список
title.append(product_tds.text)
print(' '.join(title)) # печатаем найденные и сложенные в список title тексты через пробел.
import random
def get_random_int():
return random.randint(5, 10)
def get_random_a_b():
return get_random_int(), get_random_int()
a, b = get_random_a_b()
while True:
if a > b:
result = a - b
sign = '-'
else:
result = a + b
sign = '+'
sent = '\n'.join(['', str(a), sign, str(b), 'Ваш ответ: '])
if int(input(sent)) == result:
print("Правильно!")
else:
print(f"Ошибка! Правильный ответ: {result}")
a, b = get_random_a_b()