import re
s = "выставляет на аукцион (214422): 1*Кожаная туника - 900 золота , " \
"нужно вычленить именно число в скобках, у каждого такого сообщения они каждый раз разные."
lot_re = re.compile(r'\((?P<lot_id>\d+)\)')
result = lot_re.search(s).groupdict()
print(result)
{'lot_id': '214422'}
student_tuples = [
... ('john', 'A', 15),
... ('jane', 'B', 12),
... ('dave', 'B', 10),
... ('dave1', 'B', 11),
... ('dave2', 'B', 1),
... ]
... student_tuples.sort(key=lambda student: (student[1], student[2]))
student_tuples
[('john', 'A', 15), ('dave2', 'B', 1), ('dave', 'B', 10), ('dave1', 'B', 11), ('jane', 'B', 12)]
from urllib.parse import unquote
unquote('https://www.сайт.ru/moscow?q=%D0%BA%D0%BD%D0%B8%D0%B3%D0%B0+%D0%B4%D0%BB%D1%8F+%D1%87%D1%82%D0%B5%D0%BD%D0%B8%D1%8F')
'https://www.сайт.ru/moscow?q=книга+для+чтения'
или
from urllib.parse import urlparse, parse_qs
v = parse_qs(urlparse('https://www.сайт.ru/moscow?q=%D0%BA%D0%BD%D0%B8%D0%B3%D0%B0+%D0%B4%D0%BB%D1%8F+%D1%87%D1%82%D0%B5%D0%BD%D0%B8%D1%8F').query)
v['q']
['книга для чтения']
t = {
'type': 'message_new',
'object': {
'message': {
'date': 1587065982,
'from_id': 396298943,
'id': 845, 'out': 0,
'peer_id': 396298943,
'text': '',
'conversation_message_id': 329,
'fwd_messages':
[{'date': 1587065973, 'from_id': 396298943, 'text': '',
'attachments': [], 'fwd_messages':
[{'date': 1587065635, 'from_id': 574078662,
'text': 'Мда..Вк на приложении сдохло', 'attachments': [],
'conversation_message_id': 1887}],
'conversation_message_id': 328, 'peer_id': 396298943, 'id': 844}],
'important': False, 'random_id': 0, 'attachments': [], 'is_hidden': False},
'client_info': {
'button_actions': ['text', 'vkpay', 'open_app', 'location', 'open_link'],
'keyboard': True, 'inline_keyboard': True, 'lang_id': 0}},
'group_id': 194081345, 'event_id': '919d7461a9d3217cb9f1b9eb50c7b5299571140d'}
# Можно просто
print(t['object']['message']['fwd_messages'])
# Можно не ловя ошибок
print(t.get('object', {}).get('message', {}).get('fwd_messages'))
# Можно обернуть в функцию и скармливать строку
def get_key(obj: dict, path):
for k in path.split('.'):
obj = obj.get(k, {})
return obj
print(get_key(t, 'object.message.fwd_messages'))
import re
convert_str_re = ''.maketrans({'0': r'\d', '#': r'\S'})
data = ['000', '###', '##.#', '00.0']
re_data = [v.translate(convert_str_re) for v in data]
s = '123'
print([re.findall(v, s) for v in re_data])
curl -X GET "https://api.coingecko.com/api/v3/coins/list" -H "accept: application/json" | json_pp >> cash_list
cat cash_list | grep -E "id.+bitcoin.+cash"
"id" : "10x-long-bitcoin-cash-token",
"id" : "10x-short-bitcoin-cash-token",
"id" : "1x-short-bitcoin-cash-token",
"id" : "3x-long-bitcoin-cash-token",
"id" : "3x-short-bitcoin-cash-token",
"id" : "bitcoin-cash",
"id" : "bitcoin-cash-sv",
"id" : "bitcoin-free-cash",
"id" : "ebitcoin-cash",
dann = [
(89, 20, 41, 1, 11),
(11, 1, 1, 1, 1)
]
def round_up(v, d):
result = v // d + (1 if v % d else 0)
return result
def find(room_1, max_level, room_old, p_old, level_old):
count_room_for_level = 0
# Определим количество этажей на этаже
if max_level == 1 and p_old == 1:
return 1, 1
for count_room_for_level in range(40):
if ((level_old - 1) * count_room_for_level) * p_old < room_old < (count_room_for_level * level_old) * p_old:
print(count_room_for_level)
break
else:
return -1
# Определим возможный подъезд
p_new = round_up(room_1, (max_level * count_room_for_level))
# Этаж
level_new = round_up(room_1, count_room_for_level) % max_level
print(p_new, level_new)
return p_new, level_new
print(list(find(*v) for v in dann))
from collections import defaultdict
from itertools import chain
result = defaultdict(int)
first = [{'month': 'марта', 'stat': 10}, {'month': 'февраля', 'stat': 5}, {'month': 'января', 'stat': 20}]
second = [{'month': 'марта', 'stat': 12}, {'month': 'февраля', 'stat': 7}, {'month': 'января', 'stat': 17}]
for row in chain(first, second):
result[row['month']] += row['stat']
print([{'month': k, 'stat': v} for k, v in result.items()])
a = [[[], [[{'a': 1, 'b': 2, 'c': [1, 2, []], 'd':0}, []]], [1, 2, 3], []]]
def clear_data(data):
if isinstance(data, (list, tuple)):
result = []
for value in data:
value = clear_data(value)
if value:
result.append(value)
if len(result) == 1:
return result[0]
return result
elif isinstance(data, dict):
result = {}
for key, value in data.items():
value = clear_data(value)
if value:
result[key] = value
if result:
return result
return data
print(clear_data(a))
[{'a': 1, 'b': 2, 'c': [1, 2]}, [1, 2, 3]]
import re
from dataclasses import dataclass
@dataclass
class Time:
minute: int
second: int
ms: int
@classmethod
def init(cls, data):
return cls(**{k: int(v) for k, v in data.items()})
def to_seconds(self):
return self.minute * 60 + self.second
strings = ["1m57s", "17s520ms", "1m", "10s"]
time_parse = re.compile(r"((?P<minute>\d+)(m(?!s)))?((?P<second>\d+)(s))?((?P<ms>\d+)(ms))?")
d = [Time.init(time_parse.match(v).groupdict(default='0')) for v in strings]
print(d)
print([v.to_seconds() for v in d])
[Time(minute=1, second=57, ms=0), Time(minute=0, second=17, ms=520), Time(minute=1, second=0, ms=0), Time(minute=0, second=10, ms=0)]
[117, 17, 60, 10]
# Ваш файл
file = """
Петров;85;92;78
Сидоров;100;88;94
Иванов;58;72;85
""".strip().split('\n')
# преобразуем в данные
data = {v[0]: list(map(float, v[1:])) for v in (s.split(';') for s in file)}
print(data)
# разворачиваем ваш список и считаем
avg = {i: f'sum({l})/{len(l)} = {sum(l) / len(l)}' for i, l in enumerate(zip(*data.values()))}
print(avg)
free -m | sed -n 2p | awk '{print $4}'
alph = {
"q": "й", "w": "ц", "e": "у", "r": "к", "t": "е", "y": "н", "u": "г", "i": "ш", "o": "щ", "p": "з", "a": "ф",
"s": "ы", "d": "в", "f": "а", "g": "п", "h": "р", "j": "о", "k": "л", "l": "д", "z": "я", "x": "ч", "c": "с",
"v": "м", "b": "и", "n": "т", "m": "ь", " ": " ", ";": "ж", "'": "э", "?": ",", "/": ".", "&": "?", "`": "ё",
"[": "х", "]": "ъ", ",": "б", ".": "ю"
}
en_char = ''.join(alph)
ru_char = ''.join(alph.values())
trans = ''.maketrans(en_char, ru_char)
print('ghbdtn'.translate(trans))
ddd
[(36, 'abc', 5158), (35, 'aaa', 4023), (44, 'aaa', 3756), (171, 'alc', 3262), (179, 'soc', 701), (42, 'abs', 3879), (43, 'abs', 531)]
ddd.sort(key=lambda x: x[-1])
ddd
[(43, 'abs', 531), (179, 'soc', 701), (171, 'alc', 3262), (44, 'aaa', 3756), (42, 'abs', 3879), (35, 'aaa', 4023), (36, 'abc', 5158)]
t = {v[-1]: v for v in ddd}
t
{531: (43, 'abs', 531), 701: (179, 'soc', 701), 3262: (171, 'alc', 3262), 3756: (44, 'aaa', 3756), 3879: (42, 'abs', 3879), 4023: (35, 'aaa', 4023), 5158: (36, 'abc', 5158)}