LINUX.ORG.RU

Сообщения sniper21

 

Qt настольное приложение с возможностью легко перенести его в Web

Форум — Development

Интересует возможность переноса настольного приложения написанного на Qt в Web.

 , ,

sniper21
()

при первом попадании в рекурсионную функцию выполнить условие

Форум — Development

Описание такое: есть шаблон и есть страничка html

<table>
    <tr><td></td><td></td>
    </tr><tr><td></td><td></td>
    </tr><tr><td></td><td></td></tr>
</table>
<table>
    <tr><td>veered</td><td>123</td>
    </tr><tr><td>dfvdfb</td><td>6767</td>
    </tr><tr><td>cvbfgb</td><td>123</td></tr>
</table>

я сравниваю строки и если они не равны посимвольно в рекурсии сравниваю каких данных нет и эти данные вывожу. Это всё работает!

Теперь собственно вопрос:

Хочу выделить (руками) начала нужных строк в шаблоне «#$» чтобы обрабатывать только их:

<table>
#$    <tr><td></td><td></td>
#$    </tr><tr><td></td><td></td>
#$    </tr><tr><td></td><td></td></tr>
</table>

собственно хочется что-то такое:

def recursion(position1, string1, position2, string2):
    if string2[:2] == "#$":
        new_string = string[2:] # получили подстроку без этих символов
    else: 
        for each symbol in  new_string and string1: # в цикле посимвольно
        # здесь обрабатываю разницу в символах и ставлю курсоры для рекурсивного чтения строки
         ....

        recursion(position1, string1, position2, new_string)    

и когда я передаю в рекурсию new_string от неё разумеется отщипнутся ещё два символа на следующем шаге. Вот мне нужно этого избежать.

Есть какой-то грамотный паттерн чтоли?

 ,

sniper21
()

суть ссылки, указателя и передачи по значению.

Форум — Development

Итак:

  • Указатель, указывает на участок памяти где располагается переменная, сам является переменной.
  • Ссылка -> ссылается на объект. (исправил)
  • Передача по значению - создается копия передаваемой переменной

Пока я думаю что передача по ссылке или указателем это всё для экономии памяти, чтобы не копировать всё значение.

Вопрос. В каких случаях применяется указатель, а в каких ссылки? Передача значением в этом всём вообще имеет место?

 , ,

sniper21
()

при сравнении строк, что-то пошло не так

Форум — Development

downloaded_file.html

<table>
    <tr>
        <td>Nu1</td>
        <td>546</td>
    </tr>
    <tr>
        <td>Number one</td>
        <td>342</td>
    </tr>
    <tr>
        <td>Nu3</td>
        <td>456</td>
    </tr>
</table>

file_template.html

<table>
    <tr>
        <td></td>
        <td></td>
    </tr>
    <tr>
        <td></td>
        <td></td>
    </tr>
    <tr>
        <td></td>
        <td></td>
    </tr>
</table>

Пишем, пишем код.

with open("file_template.html") as file_template:
    template_list = file_template.readlines()

with open("file_downloaded.html") as file_downloaded:
    downloaded_list = file_downloaded.readlines()


list_counter = 0
result_string=''
counter_i=0
while list_counter != len(downloaded_list):
    if downloaded_list[list_counter] != template_list[list_counter]:
        for i in range(len(template_list[list_counter])):
            if downloaded_list[list_counter][i] != template_list[list_counter][i]:
                counter_i = i
                #while  # пока символ с позиции template_list не сравняется с символом из downloaded_list
                result_string += downloaded_list[list_counter][counter_i]
        result_string += ","
    else:
        pass
    list_counter += 1
print(result_string)


И тут, как водится, что-то пошло не так:

Nu1</t,546</t,Number,342</t,Nu3</t,456</t,
А ожидалось так:
Nu1,546,Number one,342,Nu3,456

 ,

sniper21
()

текст -> шаблонизатор -> xml

Форум — Development

есть сформированный текст из него нужно получить данные и представить их в xml формате.

По сути это некий шблонизатор, текст пропускаешь через шаблон, а на выходе получается, например xml.

Что-нибудь есть готовое?

 

sniper21
()

массив списков

Форум — Development

гуглил, честно.

std::vector<std::list<std::string> arr;
std::list<std::string> li;



for (auto i = arr.begin(); i != arr.end(); ++i) {
    for (auto k = i->begin(); k != i->end(); ++k) {
        if (k == li.begin()){ // если это первый элемент в списке
            // то сделать действие
        }else {
           // для второго и последующих.
        }
    }
}

Почему k == li.begin() не срабатывает?

 , ,

sniper21
()

как из указателя получить значение?

Форум — Development

функция возвращает:

xmlChar *f;
нужно преобразовать в строку
std::string new_f(f);
как это сделать?

 , ,

sniper21
()

послать ajax не из браузера.

Форум — Development

По идее AJAX посылается клиентом (браузером), а можно ли отправить такой запрос не браузером, а, например curl ом и получить ответ?

 

sniper21
()

Сравнение строки с шаблоном посимвольно и вернуть результат

Форум — Development
#include <iostream>
#include <string.h>
#include <string>

using std::string;
using std::cout;
using std::cin;
using std::endl;

int main()
{
    string main_str     = "Test 2 string 1 ";
    string template_str = "Test   string   ";
    string temporary_str = "";

    for(std::string::size_type i = 0; i < template_str.size(); ++i) { // сравниваем в цикле посимвольно
         if (main_str[i] != template_str[i]){ // если не равно
             std::string str1(main_str[i]); // преобразуем в строку и
             temporary_str.append(str1); // добавляем во временную переменную
         }

    }

    cout << temporary_str << endl; // вывод
    return 0;
}

Ошибка invalid conversion from char to const char*

Что ж такое с этим преобразованием типов в C++?

 , , ,

sniper21
()

Собрать строку из аргументов в C++

Форум — Development

Да я понимаю что здесь мешанина с++11 и с++98(?)

Надо получить объединённую строку из параметров командной строки:

Сделал такой корявокод:

#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>

using namespace std;

int main(int argc, char *argv[])
{
    char * devicestr {}; //инициализация в стиле C++11 не ругайте, но так удобно
    char * numstr {};
    int port = 0;

    string concated_string {};

        cout << argv[0];
        for (int i = 1; i < argc; i++) {
            if (i + 1 != argc) {
                if (0 == strcmp("--devicestr", argv[i])) {
                    devicestr = argv[i + 1];
                } else (0 == strcmp("--port", argv[i])) {
                    port = std::stoi(argv[i + 1]);
                } else if (0 == strcmp("--numstr", argv[i])) {
                    numstr = argv[i + 1];
                }
            }
        }
    std::string str1(devicestr);
    std::string str2(numstr);
    concated_string = str1 + ":"+ std::to_string(port) + "/"+str2;
    cout << concated_string;
    return 0;
}

Ошибка такая: Error call overloaded «to_string(int&)» is ambiguous

как вообще правильно делать такие преобразования?

 

sniper21
()

Как в libxml2 получить родительский элемент?

Форум — Development
<tr>
<td></td>
<td>Hello, world!</td> 
<td></td>
</tr>
context = xmlXPathNewContext(doc);
result_ = xmlXPathEvalExpression((const xmlChar *)"//td[text()=\"Hello, world!\"]", context);

Как при помощи libxml2 получить родительский элемент(tr в данном случае) на С++

И вывести значение в std::cout

 ,

sniper21
()

python lxml как доделать

Форум — Development
table='''<table>
    <tr>
        <td>ccc</td>
        <td>12</td>
        <td>14</td>
    </tr>
    <tr>
        <td>bbb</td>
        <td>16</td>
        <td>18</td>
    </tr>
    <tr>
        <td>aaa</td>
        <td>20</td>
        <td>22</td>
    </tr>
</table>'''

item = root.xpath('.//td[text()="'+string_parameter+'"]'):
result = item.xpath('//td[position()=3]')

Хочется так: если найдено bbb (string_parameter) вывести 18

 ,

sniper21
()

параллельный запуск 10 питон-скриптов нагружает проц

Форум — General

время выполнения одного скрипта:

real    0m0.134s
user    0m0.121s
sys     0m0.011s

10 параллельных выполнений грузят проц как не в себя. Есть способ уменьшить нагрузку на проц?

 ,

sniper21
()

грамотно установить pip в pypy в centos 7.3

Форум — Admin

в дополнительных репах есть пакеты с pip для python 2.7 и 3.4

а как поставить pip для pypy глобально, а не в virtualenv?

 , ,

sniper21
()

python html таблица в json

Форум — Development
s = "<table><tr><td>Num of something 1</td><td>4532</td></tr><tr><td>Num of something 2</td><td>0</td></tr><tr><td>Num of something 3</td><td>8</td></tr></table>"
soup = bs4.BeautifulSoup(s, 'html.parser')
for table in bf4.find('table').find_all('tr'):
    rows = [row.text for row in table.find_all('td')]
    data.append(rows)
print (json.dumps(data))

Вот так работает. JSON делается!

Остался вопрос: Как сделать json из таблицы с тремя колонками с использованием json массива «key»: []?

 , , ,

sniper21
()

Zabbix external check и python

Форум — Admin

Внешние проверки зло, но без них никак. Сейчас запускаю самым плохим, как выяснилось для процессора, способом: Zabbix external check key:

script.py ["--param","{HOST.HOST}"]

script.py такой

#!/usr/bin/env python

...
...
Есть ли способ запускать уже скомпилированный скрипт python, а не компилировать его при каждом запуске? Или делать вообще по другому?

 ,

sniper21
()

отобрать файлы по маске и переместить в другую директорию

Форум — General

На bash:

Маска такая *08.csv *09.csv *10.csv

Что-то типа такого должно быть?

for file in *[08-10].csv
do
        mv ${file} /home/user/${file}
done

 

sniper21
()

python bs4 достать значения из колонки

Форум — Development

Есть таблица и нужно если найдено значение Num of something то нужно достать значение 2. Номер колонки, задается параметром.

<table>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Num of something</td>
<td>0</td>
<td>2</td>
</tr>
<tr>
<td>Num2 of something</td>
<td>8</td>
<td>3</td>
</tr>
</table>
data=[]
def get_value(column_number):  # номер колонки 2
    soup = bs4.BeautifulSoup(s, 'html.parser')
    tables = soup.findAll("table")
    for table in tables:
        rows = table.findAll('tr')
        for row in rows:
            data.append(row.findAll('td', text="Num of something")) # находим строку, а что дальше то?
    
    return data

 ,

sniper21
()

python как будет почеловечески?

Форум — Development

нашёл вот это:

.append([value for value in columns if value])

разгадать пытаюсь что это будет так:

for value in columns:
    if value:
        .append([value])

но не сходится что-то

 

sniper21
()

python добавить в каждую строку списка поле, а в первую строку другое поле

Форум — Development

Я чего-то совсем не понимаю. Что не так-то?

new_list = []
for line in old_lines:
    if line[0]:
        new_list.append('newID' + ' , ' + line)
    else:
        new_list.append('124456' + ' , ' + line)

 ,

sniper21
()

RSS подписка на новые темы