"12[34]56[78]90"
, то жадная регулярка (без вопросика) найдёт "[34]56[78]"
, а не жадная найдёт "[34]"
и "[78]".
for product_id, value in list(products.items()):
if value['g_1'] == 0:
del products[product_id]
new_products_dict = {k: v for k, v in products.items() if v['g_1'] != 0}
set isql="C:\\Program Files(x86)\\FireBird\\FireBird_2_1\\BIN\\isql.exe"
echo ^
SELECT C.CODE AS "Табельный", C.NAME AS "Ф.И.О.", T.TRANZDATE AS "Дата", max(T.TRANZTIME) AS "Время", T.INFOSTR AS "Карта" sum(T.SUMM) AS "Сумма" FROM DOCUMENT D LEFT JOIN TRANZT T ON D.ID = T.DOCUMENTID JOIN CLIENT C ON D.CLIENTID = C.ID WHERE T.TRANZDATE = cast('now' as date) and D.STATE = 1 AND D.ISFISCAL = 1 AND D.CLIENTID >=0 AND T.TRANZTYPE = '36' GROUP BY C.CODE, C.NAME, T.TRANZDATE, T.INFOSTR; ^
| %isql% 127.0.0.1/3050:E:\Torgovlya54\MAIN.GDB sysdba masterkey > outputfile.txt
from urllib.parse import urlparse
from bs4 import BeautifulSoup
import requests
import lxml
DOMAIN = 'apexair.ru'
HOST = 'http://' + DOMAIN
FORBIDDEN_PREFIXES = ['#', 'tel:', 'mailto:']
links = set() # множество всех ссылок
headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}
response = requests.get(HOST, headers=headers)
# print(response.content)
def add_all_links_recursive(url, maxdepth=1):
# print('{:>5}'.format(len(links)), url[len(HOST):])
# глубина рекурсии не более `maxdepth`
# список ссылок, от которых в конце мы рекурсивно запустимся
links_to_handle_recursive = []
# получаем html код страницы
request = requests.get(url, headers=headers)
# парсим его с помощью BeautifulSoup
soup = BeautifulSoup(request.content, 'lxml')
# рассматриваем все теги <a>
for tag_a in soup.find_all('a', href=lambda v: v is not None):
link = tag_a['href']
# если ссылка не начинается с одного из запрещённых префиксов
if all(not link.startswith(prefix) for prefix in FORBIDDEN_PREFIXES):
# проверяем, является ли ссылка относительной
# например, `/oplata` --- это относительная ссылка
# `http://101-rosa.ru/oplata` --- это абсолютная ссылка
if link.startswith('/') and not link.startswith('//'):
# преобразуем относительную ссылку в абсолютную
link = HOST + link
# проверяем, что ссылка ведёт на нужный домен
# и что мы ещё не обрабатывали такую ссылку
if urlparse(link).netloc == DOMAIN and link not in links:
links.add(link)
links_to_handle_recursive.append(link)
if maxdepth > 0:
for link in links_to_handle_recursive:
add_all_links_recursive(link, maxdepth=maxdepth - 1)
def main():
add_all_links_recursive(HOST + '/')
for link in links:
print(link)
if __name__ == '__main__':
main()
data=[
['дата', '1', '2', '3', '4', '5', '6', '7', ...],
['Ноябрь 2019', '11', '22', '33', '44', '55', '66', '77', ...],
['Декабрь 2019', '11', '22', '33', '44', '55', '66', '77', ...],
...
]
import datetime
import locale
def replace_month(dt: str) -> str:
dt = dt.replace('Январь', 'января')
dt = dt.replace('Февраль', 'февраля')
# ...
return dt
locale.setlocale(locale.LC_TIME, "ru_RU.utf8")
head = data[0]
data = data[1:]
result_rows = []
for row in data:
for day, value in zip(head[1:], row[1:]):
dt = replace_month(f'{day} {row[0]}')
try:
dt = datetime.datetime.strptime(dt, '%d %B %Y')
except ValueError:
pass # тут у нас дата не сконвертнулась, например, 30 февраля. Пофиг.
else:
result_rows.append((dt, value))