🍁 Jaŭhien
сложная это штука, я тебе скажу
🍁 Jaŭhien
точнее, юникод
Евгений
ну что-нибудь банальное. Из cp866 в utf-8.
Мы про C++ в вакууме говорим? Windwos и WinApi например вам в помощь MultiByteToWideChar, MultiByteToWideChar, WideCharToMultiByte, WideCharToMultiByte?
Dmytro
А что со сплитом не так?
Way
Работаю с очень привередливым сайтом. Они принимает только urlencoded такого формата email=&name={"first":"Роберт","last":"Сергей"}&birthday={"day":3,"month":6,"year":1988}&htmlencoded=false&utm={"source":"","medium":"","campaign":"","term":"","content":""}&referrer=https://account.mail.ru/login?page=https%3A%2F%2Faccount.mail.ru%2F%3F& И представлена она как email=&name=%7B%22first%22%3A%22%D0%A0%D0%BE%D0%B1%D0%B5%D1%80%D1%82%22%2C%22last%22%3A%22%D0%A1%D0%B5%D1%80%D0%B3%D0%B5%D0%B9%22%7D&birthday=%7B%22day%22%3A3%2C%22month%22%3A6%2C%22year%22%3A1988%7D&htmlencoded=false&utm=%7B%22source%22%3A%22%22%2C%22medium%22%3A%22%22%2C%22campaign%22%3A%22%22%2C%22term%22%3A%22%22%2C%22content%22%3A%22%22%7D&referrer=https%3A%2F%2Faccount.mail.ru%2Flogin%3Fpage%3Dhttps%253A%252F%252Faccount.mail.ru%252F%253F%26 Так вот, я собираю такую же строку в Python3 data = { "email":"", "name":{"first":"Роберт","last":"Сергей"}, "birthday":{"day":3,"month":6,"year":1988}, "htmlencoded": False, "utm":{"source":"","medium":"","campaign":"","term":"","content":""}, "referrer":"https://account.mail.ru/login?page=https://account.mail.ru/?&" } И преобразую как urllib.parse.urlencode() Но на выходе я получаю такую строку email=&name={'first': 'Роберт', 'last': 'Сергей'}&birthday={'day': 3, 'month': 6, 'year': 1988}&htmlencoded=False&utm={'source': '', 'medium': '', 'campaign': '', 'term': '', 'content': ''}&referrer=https://account.mail.ru/login?page=https://account.mail.ru/?& Вопрос такой. Как мне сделал urlencoded чтобы в нем были двойные ковычки и не было пробелов после двоеточия
koder
какая функция в C++ эквивалентна split ?
Aragaer
кого и по чему?
Dmytro
какая функция в C++ эквивалентна split ?
Написать свою на 20 строчек
Aragaer
хотя на самом деле конечно istringstream
Dmytro
За 5 минут
Aragaer
и читать оттуда
Евгений
winapi не везде доступно)
https://www.boost.org/doc/libs/1_60_0/doc/html/string_algo/usage.html#idm45555128601440
Евгений
boost тоже никто не отменял
Dmytro
:) хорошая шутка
Если с одним символом, то ничего сложного. С n-ым количеством символов ещё подумать
koder
вот только хотел написать - вы еще boost вспомните
Tishka17
Работаю с очень привередливым сайтом. Они принимает только urlencoded такого формата email=&name={"first":"Роберт","last":"Сергей"}&birthday={"day":3,"month":6,"year":1988}&htmlencoded=false&utm={"source":"","medium":"","campaign":"","term":"","content":""}&referrer=https://account.mail.ru/login?page=https%3A%2F%2Faccount.mail.ru%2F%3F& И представлена она как email=&name=%7B%22first%22%3A%22%D0%A0%D0%BE%D0%B1%D0%B5%D1%80%D1%82%22%2C%22last%22%3A%22%D0%A1%D0%B5%D1%80%D0%B3%D0%B5%D0%B9%22%7D&birthday=%7B%22day%22%3A3%2C%22month%22%3A6%2C%22year%22%3A1988%7D&htmlencoded=false&utm=%7B%22source%22%3A%22%22%2C%22medium%22%3A%22%22%2C%22campaign%22%3A%22%22%2C%22term%22%3A%22%22%2C%22content%22%3A%22%22%7D&referrer=https%3A%2F%2Faccount.mail.ru%2Flogin%3Fpage%3Dhttps%253A%252F%252Faccount.mail.ru%252F%253F%26 Так вот, я собираю такую же строку в Python3 data = { "email":"", "name":{"first":"Роберт","last":"Сергей"}, "birthday":{"day":3,"month":6,"year":1988}, "htmlencoded": False, "utm":{"source":"","medium":"","campaign":"","term":"","content":""}, "referrer":"https://account.mail.ru/login?page=https://account.mail.ru/?&" } И преобразую как urllib.parse.urlencode() Но на выходе я получаю такую строку email=&name={'first': 'Роберт', 'last': 'Сергей'}&birthday={'day': 3, 'month': 6, 'year': 1988}&htmlencoded=False&utm={'source': '', 'medium': '', 'campaign': '', 'term': '', 'content': ''}&referrer=https://account.mail.ru/login?page=https://account.mail.ru/?& Вопрос такой. Как мне сделал urlencoded чтобы в нем были двойные ковычки и не было пробелов после двоеточия
json.dumps перед encode
Евгений
форматирование split/join тоже те еще приятные операции в C++
string str1("hello abc-*-ABC-*-aBc goodbye"); typedef vector< iterator_range<string::iterator> > find_vector_type; find_vector_type FindVec; // #1: Search for separators ifind_all( FindVec, str1, "abc" ); // FindVec == { [abc],[ABC],[aBc] } typedef vector< string > split_vector_type; split_vector_type SplitVec; // #2: Search for tokens split( SplitVec, str1, is_any_of("-*"), token_compress_on ); // SplitVec == { "hello abc","ABC","aBc goodbye" } Вот split. Да это не одна строка, но и далеко не боль.
Дмитрий
https://www.boost.org/doc/libs/1_60_0/doc/html/string_algo/usage.html#idm45555128601440
это правда, как и многие другие штуки типа qt. но когда оно все есть из коробки и стандартизированное, а не в каждом проекте свой набор счастья - оно удобнее гораздо.
koder
короче разговор был не про это. и на ассемблере можно все написать. разговор был про то, что в питоне это все в строке из коробки
koder
а в C++ вам нужно писать вот такой адок, как вверху, или тащить за собой boost, который что бы скомпилить нужно убить день первый раз
koder
но безусловно все эти языки тьюринг-полные и все можно на всем написать
koder
А что там его компилить-то
а вы когда его компилили? А как на счет встроить его адовый bjam в другую систему сборки?
Dmitry
а вы когда его компилили? А как на счет встроить его адовый bjam в другую систему сборки?
Пару месяцев назад собирал в последний раз. Там есть набор готовых скриптов, которые без заморочек все собирут
koder
его можно тащить кусочками и сэкономить 3/4 дня
я не имел в виду время компиляции, а имел в виду веселый секс с линкером и флагами компиляции
koder
Пару месяцев назад собирал в последний раз. Там есть набор готовых скриптов, которые без заморочек все собирут
ага, куча адка, которая требует ил выстраивать весь проект на bjam или долго биться головой о стену с линкером
koder
А где ты видел приятные простоые вещи а плюсах?)
ну сборка буста таки выигрывает премию "как убить время на сборку", даже в scala/kotlin по-проще, хотя я совсем далек от java
Pavel
А где ты видел приятные простоые вещи а плюсах?)
есть подмножество людей, которые пишут на плюсах без использования stl и буста. и при этом гордо рассказывают, что пишут на плюсах
Pavel
вот у них всё в общем несложно
Ilya
день добрыть, прошу прощения за глупый вопрос, но я что-то торможу, как правильно сделать срез строки, чтобы получить только определенное количество символов в конце Нпример есть строка smb_NAME-INTERNET_06032019065937_000173467, а мне надо только 06032019065937_000173467 т.е. 25 символов с конца
Ilya
s[-25:]
это второе что я попробовал/ возвращает начало строки
Tishka17
двоеточие не потерял?
Pavel
это второе что я попробовал/ возвращает начало строки
In [2]: 'smb_NAME-INTERNET_06032019065937_000173467'[-24:] Out[2]: '06032019065937_000173467'
Tishka17
ну так
Tishka17
а я написал что?
Pavel
print(mstr[:-24])
у тебя срез же от начала до -24 символа
Pavel
наоборот надо
Ilya
двоеточие стдругой строны :) мда....внимательность она такая
Valera
Как узнать, сколько "весит" строка в байтах?
koder
Как узнать, сколько "весит" строка в байтах?
вверху же обсуждалось 30 экранов. sys.getsizeof но смотря зачем оно надо
Tishka17
Как узнать, сколько "весит" строка в байтах?
а что ты планируешь с этими знаниями делать?
Tishka17
и где "весит"?
Valera
Пользователь прежде чем скачать контнет может увидеть размер скачиваемого контента. Так вот он будет складывается из нескольких полей - description (string), parameters (json), image Мне нужно подсчитать в итоге сумму всех этих полей в байтах
Aragaer
делаешь encode и получаешь bytes. А у него вызываешь len
Aragaer
вот столько он скачает
Евгений
Если я тебя правильно понял, то тебе не подходит sizeof.
Valera
ну не немного,а много)
🍁 Jaŭhien
sizeof возвращает размер питоньего объекта в памяти
Евгений
короче разговор был не про это. и на ассемблере можно все написать. разговор был про то, что в питоне это все в строке из коробки
Да я понимаю, что разговор был не совсем про это :) Просто когда то были перфокарты, думаю там со строками было работать проблематично. А вот когда то спичек н было и костер разводили потерев палочками. :) Думаю при всех прочех C++ не был такой болью :)
koder
Да я понимаю, что разговор был не совсем про это :) Просто когда то были перфокарты, думаю там со строками было работать проблематично. А вот когда то спичек н было и костер разводили потерев палочками. :) Думаю при всех прочех C++ не был такой болью :)
вот не совсем. удобные и понятный API питона приводит к тому что работа со строками куда проще и вместо долгих ковыряний с итераторами и ручными сканами ты получаешь чистый, понятный, более футнкциональный и безопасные код. Обычно идея переписать кусок питона, который делает нетривиальную работу с текстом (парсинг/трансляция/etc) на С++ очень неудобная. Кучу времени будет воевать с языком вместо выражения своего алгоритмы
koder
Ладно. Давай каждый при своем останется :)
ну если 5 символов vs 150 символов для той же задачи не разница для тебя, то ок :) более убедительных примеров я не придумаю
Dmytro
ну если 5 символов vs 150 символов для той же задачи не разница для тебя, то ок :) более убедительных примеров я не придумаю
А вы считаете, что питон магическим образом с помощью одной инструкции разделяет строку?
Дмитрий
А вы считаете, что питон магическим образом с помощью одной инструкции разделяет строку?
на уровне юзера - да, а что под капотом - как минимум, это не надо покрывать тестами
koder
А вы считаете, что питон магическим образом с помощью одной инструкции разделяет строку?
мне все равно сколько там внутри ассемблерных инструкций до тех пор пока это работает без багов и с приемлемой скоростью
Valera
Как можно отрефакторть? questions_size = 0 for question in self.questions.all(): questions_size = questions_size + question.calc_size()
Michael
F()
Valera
cпасибо
Anonymous
Anonymous
почему не хочет создавать новую фигуру?
Евгений
Anonymous
Он же работает как надо?
Ну раз ошибка, значит наверное нет)
Евгений
Попробуем ещё раз? Ошибка в строке 45. Обращение через [] к grid падает.