
Nikolay
16.03.2019
18:28:25
sum(bool(x.get('type', str())) for x in my_json.get('sizes', list()))

Saveliy
16.03.2019
18:29:20

Nikolay
16.03.2019
18:29:28
Инеблагодари

Saveliy
16.03.2019
18:29:40

Google

Artur Rakhmatulin
16.03.2019
18:30:23

F-Society
16.03.2019
18:30:39
Почему чтобы посмотреть видео, надо ее скачать ? Раньше вроде такого не было, или у меня что-то в настройках неправильно

Nikolay
16.03.2019
18:30:40
я так вижу

Artur Rakhmatulin
16.03.2019
18:31:20

F-Society
16.03.2019
18:31:35
То есть у вас не так. Ок буду искать

Artur Rakhmatulin
16.03.2019
18:33:31

Pavel
16.03.2019
18:49:19

Tigran
16.03.2019
18:52:29

Artur Rakhmatulin
16.03.2019
18:52:51
я думаю это конкурс на самое неоптимальное решение
надо одним потоком сохранять в гугл таблицах, а другим читать ?

Nikolay
16.03.2019
18:54:06

hachiman
16.03.2019
19:12:18

Google

Tigran
16.03.2019
19:14:21
?♂️

Pavel
16.03.2019
19:15:38
странных решений контест :)

Saveliy
16.03.2019
19:15:40
Крч , умников всегда больше чем решений )

Tigran
16.03.2019
19:17:03

hachiman
16.03.2019
19:18:30

Tigran
16.03.2019
19:18:50

Pavel
16.03.2019
19:18:53
есть еще Counter, кстати

hachiman
16.03.2019
19:21:28
json же
это не Чел пишет криво

Tigran
16.03.2019
19:22:00

hachiman
16.03.2019
19:23:23

Tigran
16.03.2019
19:24:32
ну и?
.count('type') не работает

hachiman
16.03.2019
19:25:46

Tigran
16.03.2019
19:26:20
ответ очевиден, твоё решение неправильное и надо сделать по-другому
но через re тоже корректно не сделаешь.
надо парсить json парсером json и идти циклом


Никита
16.03.2019
19:27:06
Вопрос не по Пайтону, но надеюсь на вашу помощь. Подскажите по структуре:
есть посты, к которым могут прикрепляться файлы, которые можно просматривать с информацией об их размере, оригинальном имени и саму ссылку на файл. Файлы само собой можно прикреплять при создании поста, при его редактировании можно и добавлять и удалять привязанные файлы.
Сейчас это реализовано так: есть API метод files.upload, через который загружается файл, в результате файл загружается в хранилище а в базе создается запись с метаданными файла и ему выдается айдишник. Полученные айдишники файлов можно передать при создании/редактировании поста в виде массива айдишников. В результате чего будет созданы записи в отделную таблицу attachments со связью в виде post_id - file_id. При получении поста, таблица attachments джоинится с таблицей файлов по ключу file_id для получения метаданных прикрепленных файлов. При удалении прикрепленного файла, вызывается метод attachments.delete, который удаляет запись из таблицы attachments.
Нормальный вариант? Или есть получше?
files.upload также используется для загрузки каких либо других файлов на сайте (фото профайла, аватарка группы, и т.д.)


Tigran
16.03.2019
19:30:31
Нормальный вариант, а разве видны какие-то проблемы?
Не упомянута только чистка хранилища при удалении метаданных.

Google

Марк
16.03.2019
19:36:52

Pavel
16.03.2019
19:37:29

Марк
16.03.2019
19:37:51

Pavel
16.03.2019
19:39:42
Жить она еще будет долго.
я не спорю. некоторые люди до сих пор под 2.6 ядро модули пишут, например. так что и второму питону еще долго где-то присутствовать ничего не помешает

hachiman
16.03.2019
19:42:26

Tigran
16.03.2019
19:43:16
ломается на "type": ":type:: "

Dima
16.03.2019
19:43:32
Ты настаиваешь на своем? Говорят, хорошо настаивать на клюкве

hachiman
16.03.2019
19:44:56

Tigran
16.03.2019
19:45:15
Зачем отстаивать своё хуёвое решение с регулярками, когда можно просто распарсить JSON?

Artur Rakhmatulin
16.03.2019
19:46:01
import json; import re; my_json = {"sizes": [{"type": "s",},{"type": "m",}]}; print(len(re.findall('(\{\"type\"\:\s*\"\w+\"\}\,{0,1})', json.dumps(my_json))))

Pavel
16.03.2019
19:46:10

Владимир
16.03.2019
19:46:21
Регулярки для разбора JSON — это божественная херота

Tigran
16.03.2019
19:47:42

Марк
16.03.2019
19:48:33

hachiman
16.03.2019
19:48:53
Не хотите Как хотите

Dima
16.03.2019
20:26:35


oche somali yoba
16.03.2019
20:29:46
Сейчас пишу код для распознавания таблиц и их содержимого в отсканированных документах (на вход pdf, на выход json со строками и столбцами таблицы). Текущий подход - обнаружение контуров, вырезание ячеек как отдельных изображений и прогон через тессеракт. Проблема в том, что иногда даже после предобработки таблицы обрабатываются либо скошенными, либо с нерегулярными разделительными линиями, что нарушает порядок при использовании текущего метода сортировки ячеек (лист 1 до N, где потом тессеракт обнаруживает текстовые поля и принимает их за заголовки колонок, которые заполняются содержимым ячеек между заголовочными)
Вот код используемой сейчас сортировки сверху вниз, слева направо
def sort_rect_vertical(cnts):
rect = [cv2.boundingRect(c) for c in cnts]
rect.sort(key=lambda b: b[1])
line_bottom = rect[0][1]+rect[0][3]-1
line_begin_idx = 0
for i in xrange(len(rect)):
if rect[i][1] > line_bottom:
rect[line_begin_idx:i] = sorted(rect[line_begin_idx:i], key=lambda b: b[0])
line_begin_idx = i
line_bottom = max(rect[i][1]+rect[i][3]-1, line_bottom)
rect[line_begin_idx:] = sorted(rect[line_begin_idx:], key=lambda b: b[0])
Мне хотелось бы спросить, как лучше доработать этот код для расфасовывания ячеек по столбцам.


Savva
16.03.2019
20:31:29
Сейчас пишу код для распознавания таблиц и их содержимого в отсканированных документах (на вход pdf, на выход json со строками и столбцами таблицы). Текущий подход - обнаружение контуров, вырезание ячеек как отдельных изображений и прогон через тессеракт. Проблема в том, что иногда даже после предобработки таблицы обрабатываются либо скошенными, либо с нерегулярными разделительными линиями, что нарушает порядок при использовании текущего метода сортировки ячеек (лист 1 до N, где потом тессеракт обнаруживает текстовые поля и принимает их за заголовки колонок, которые заполняются содержимым ячеек между заголовочными)
Вот код используемой сейчас сортировки сверху вниз, слева направо
def sort_rect_vertical(cnts):
rect = [cv2.boundingRect(c) for c in cnts]
rect.sort(key=lambda b: b[1])
line_bottom = rect[0][1]+rect[0][3]-1
line_begin_idx = 0
for i in xrange(len(rect)):
if rect[i][1] > line_bottom:
rect[line_begin_idx:i] = sorted(rect[line_begin_idx:i], key=lambda b: b[0])
line_begin_idx = i
line_bottom = max(rect[i][1]+rect[i][3]-1, line_bottom)
rect[line_begin_idx:] = sorted(rect[line_begin_idx:], key=lambda b: b[0])
Мне хотелось бы спросить, как лучше доработать этот код для расфасовывания ячеек по столбцам.
На pastebin залей или пришли фоткой


Pavel
16.03.2019
20:32:53

Google

Savva
16.03.2019
20:34:14

Pavel
16.03.2019
20:34:22
это самый плохой способ


Savva
16.03.2019
20:34:41
Сейчас пишу код для распознавания таблиц и их содержимого в отсканированных документах (на вход pdf, на выход json со строками и столбцами таблицы). Текущий подход - обнаружение контуров, вырезание ячеек как отдельных изображений и прогон через тессеракт. Проблема в том, что иногда даже после предобработки таблицы обрабатываются либо скошенными, либо с нерегулярными разделительными линиями, что нарушает порядок при использовании текущего метода сортировки ячеек (лист 1 до N, где потом тессеракт обнаруживает текстовые поля и принимает их за заголовки колонок, которые заполняются содержимым ячеек между заголовочными)
Вот код используемой сейчас сортировки сверху вниз, слева направо
def sort_rect_vertical(cnts):
rect = [cv2.boundingRect(c) for c in cnts]
rect.sort(key=lambda b: b[1])
line_bottom = rect[0][1]+rect[0][3]-1
line_begin_idx = 0
for i in xrange(len(rect)):
if rect[i][1] > line_bottom:
rect[line_begin_idx:i] = sorted(rect[line_begin_idx:i], key=lambda b: b[0])
line_begin_idx = i
line_bottom = max(rect[i][1]+rect[i][3]-1, line_bottom)
rect[line_begin_idx:] = sorted(rect[line_begin_idx:], key=lambda b: b[0])
Мне хотелось бы спросить, как лучше доработать этот код для расфасовывания ячеек по столбцам.
Скрин во всяком случае лучше этого


Pavel
16.03.2019
20:34:56

Savva
16.03.2019
20:35:45
С той, что на фотке и код подсвечивается, таббуляция не сбита и строки не переносятся

oche somali yoba
16.03.2019
20:35:59
Сейчас отскриню.

Pavel
16.03.2019
20:36:04

Tigran
16.03.2019
20:37:12
(facepalm)
Измельчали разработчики, без подсветки не могут!

oche somali yoba
16.03.2019
20:37:33

Denis
16.03.2019
20:38:52

Dark
16.03.2019
20:43:22
есть список в котором описаны прямоугольники, некоторые из них накладываются друг на друга
нужно выписать координаты мест где есть прямоугольники
как это сделать?

Aragaer
16.03.2019
20:44:32
а что сделать, если бы был прямоугольник, накрывающий левую нижнюю точку верхней группы и правую верхнюю нижней?

Pavel
16.03.2019
20:46:43
мультиполигон что ли?