\
.( ) [ ] ^ $ . ? * +
. Если тебе нужен этот символ как просто символ, его надо экранировать! Т.е. если тебе нужно совпадение с символом ?
, надо писать \?
.[abc]
совпадёт с одним символом из указанных: a, b или c. Для задания диапазона можно сделать так: [a-z]
. Это зачастую короче.[^abc]
\w
описывает словесные символы (буквы, цифры и подчёркивание), \d
описывает цифры, и т.д. Аналогично, \W
и \D
описывают всё кроме словесных символов и цифр, соотв.re.sub(r'\W', '', 'test:_:test', re.I) # даст test_test
re.sub(r'[\W_]', '', 'test:_:test', re.I) # даст testtest
import yaml
with open('test.json', encoding='utf-8') as f:
data = yaml.load(f, yaml.CSafeLoader)
Особенно там, где был использован язык Си или С++
Наш Процессинговый Центр занимается разработкой финансовых систем, критичных к даунтайму и времени обработки. Изначально мы делали все свои продукты либо на чистом Си, либо на плюсах (C++14), однако пару лет назад мы переписали большой кусок нашего бэкенда на Rust, и нам настолько понравилось, что теперь все наши новые процессинговые сервисы пишутся на нём.
Мне бы хотелось видеть какое-то сравнение, что вот так стало сильно лучше и безопаснее, а вот было так написано изначально на оригинальном языке
ну тут все-равно unsafe
ну, нам еще нужен подсчет ссылок
import requests
from xml.etree import ElementTree
response = requests.get(
'https://s3-ap-northeast-1.amazonaws.com/data.binance.vision?delimiter=/&prefix=data/spot/monthly/klines/BTCUSDT/1h/')
print(response)
archive_tree = ElementTree.fromstring(response.content)
namespace = archive_tree.tag.split('}')[0].strip('{')
for files in archive_tree.iter(f'{{{namespace}}}Key'):
print(files.text)
<Response [200]>
data/spot/monthly/klines/BTCUSDT/1h/BTCUSDT-1h-2017-08.zip
data/spot/monthly/klines/BTCUSDT/1h/BTCUSDT-1h-2017-08.zip.CHECKSUM
data/spot/monthly/klines/BTCUSDT/1h/BTCUSDT-1h-2017-09.zip
data/spot/monthly/klines/BTCUSDT/1h/BTCUSDT-1h-2017-09.zip.CHECKSUM
data/spot/monthly/klines/BTCUSDT/1h/BTCUSDT-1h-2017-10.zip
data/spot/monthly/klines/BTCUSDT/1h/BTCUSDT-1h-2017-10.zip.CHECKSUM
...
SELECT user_id, join_date EXTRACT(DAY FROM date) as day FROM users VALUES (?, ?)
field = [input() for _ in range(n)]
field[i+dx][j+dy] == '.'
0 <= i+dx < n and 0 <= j+dy < m and field[i+dx][j+dy] == '.'
not valid_move
print('NO')
exit()
from confusable_homoglyphs.confusables import is_confusable
wtf = 'YOᑌ ᑎᗩᗰE 42'
is_good = []
result = []
for c in wtf:
data = is_confusable(c, preferred_aliases=[], greedy=True)
if data:
data = data[0]
alias = data['alias']
if alias in ('LATIN', 'COMMON'):
data = False
if data:
is_good.append('!')
print(data)
result.append(data['homoglyphs'][0]['c'])
else:
is_good.append(' ')
result.append(c)
print()
print(''.join(result))
print(''.join(is_good))
отлонения показаний, которые выходят за пределы допустимых.
import numpy as np
arr=np.empty(10)
for item in dir(arr):
print(item, getattr(arr,item))
interesting_methods = [method for method in dir(arr) if method.startswith('__') is False]
for item in interesting_methods:
print(item, getattr(arr,item))