![]() 277 / 277 / 25
Регистрация: 02.08.2012
Сообщений: 1,232
|
|||||||||||
1 | |||||||||||
Как из строк csv-файла сделать xml-файлы?02.08.2013, 15:19. Просмотров 4067. Ответов 17
Метки нет Все метки)
(
Добрый день. Столкнулся в проблемой парсинга csv файла и созданием конфигурационных файлов по данным таблицы. Я написал небольшой код. Программа берет csv файл и разбирает его по делителям. Выписывает в консоль и в файл построчно данные. Необходимо чтобы программа либо генерировала новый конфиг ( шаблон уже готов и есть переменные, которые в зависимости от строки менялись) или парсила уже готовый шаблон и вставляла в нужное место нужное значение. Затруднение в том, что программа выдает данные построчно:
Код
1, 2, IF-MIB::ifDescr.51 = STRING: GigabitEthernet6/0/40, 192.33.73.124/24 Шаблон в который вставлять ( генерировать) выглядит так : Кликните здесь для просмотра всего текста
Код программы, которую я написал: Кликните здесь для просмотра всего текста
0
|
|
02.08.2013, 15:19 | |
Конвертация файла XML в CSV Как правильно сделать загрузку из csv файла в таблицу (WPF MVVM)
Разработка программы конвертации csv файла в xml структуру данных
__________________
17
Помогаю в написании студенческих работ здесь. Записывайтесь на профессиональные курсы Fullstack-разработчиков на Python |
|
4851 / 3272 / 466
Регистрация: 10.12.2008
Сообщений: 10,570
|
||||||
03.08.2013, 07:44 | 2 | |||||
python.org. xml. modifying
1
|
![]() 277 / 277 / 25
Регистрация: 02.08.2012
Сообщений: 1,232
|
|
03.08.2013, 10:24 [ТС] | 3 |
Прощу прощения, но не могли бы Вы пояснить что Вы сделали?
Я прочитал Вашу ссылку, но так ответ на свой вопрос я не нашел...
0
|
4851 / 3272 / 466
Регистрация: 10.12.2008
Сообщений: 10,570
|
|
03.08.2013, 10:42 | 4 |
сформулируй задачу
приведи файл, который у тебя есть приведи файл, который должен получиться в твоём коде есть чтение csv-файла, но нет правильного выделения данных и правильной записи их в новый файл сделал текстовый шаблон, в который подставляются данные в заданные места
0
|
![]() 277 / 277 / 25
Регистрация: 02.08.2012
Сообщений: 1,232
|
|||||||||||
03.08.2013, 12:22 [ТС] | 5 | ||||||||||
Выше я все описал. Но да ладно, еще раз могу, может более внятно получится.
Есть файл csv в нем расположены построчно данные по каждому объекту (host'у). Выглядит он так : Код
1, 2, IF-MIB::ifDescr.51 = STRING: GigabitEthernet6/0/40, 192.168.1.1/24 2, 3, IF-MIB::ifDescr.53 = STRING: GigabitEthernet6/0/5, 192.168.1.2/24 3, 21, IF-MIB::ifDescr.21 = STRING: GigabitEthernet6/0/44, 192.168.1.3/24 4, 24, IF-MIB::ifDescr.11 = STRING: GigabitEthernet6/0/12, 192.168.1.4/24 Далее 3е поле временно учитывать не будем. 4ое поле где в первом случае 192.168.1.1/24, отбрасывается /24, остается 192.168.1.1 и записывается в переменную IPADDRESS. Далее, есть шаблон для программы мониторинга забикс. В нем занесены переменные HOSTNAME и IPADDRESS между тегами, см. шаблон. Кликните здесь для просмотра всего текста
После выполнения программы создаются 4 файла (для данного случая), где первый файл-шаблон будет выглядеть так : Кликните здесь для просмотра всего текста
Последующие будут создаваться по аналогии. Трудность заключается в том, что я не знаю как разобрать строчку csv-файла на переменные HOSTNAME, IPADDRESS. Я могу только создать xml файл и вставить в него тупо строчку.
0
|
Z3JheSBoYXQ=
339 / 234 / 83
Регистрация: 08.07.2012
Сообщений: 577
|
||||||
03.08.2013, 19:33 | 6 | |||||
1
|
4851 / 3272 / 466
Регистрация: 10.12.2008
Сообщений: 10,570
|
|
03.08.2013, 20:35 | 7 |
Код
[guest@localhost csvxml]$ ./csvxml.py ok [guest@localhost csvxml]$ Кликните здесь для просмотра всего текста
Код
[guest@localhost csvxml]$ cat file.csv output0.xml 1, 2, IF-MIB::ifDescr.51 = STRING: GigabitEthernet6/0/40, 192.168.1.1/24 2, 3, IF-MIB::ifDescr.53 = STRING: GigabitEthernet6/0/5, 192.168.1.2/24 3, 21, IF-MIB::ifDescr.21 = STRING: GigabitEthernet6/0/44, 192.168.1.3/24 4, 24, IF-MIB::ifDescr.11 = STRING: GigabitEthernet6/0/12, 192.168.1.4/24 <?xml version="1.0" encoding="UTF-8"?> <zabbix_export> <version>2.0</version> <date>2013-07-31T11:56:38Z</date> <groups> <group> <name>Object</name> </group> </groups> <hosts> <host> <host>1-Object-2-Group</host> <name>1-Object-2-Group</name> <proxy/> <status>0</status> <ipmi_authtype>-1</ipmi_authtype> <ipmi_privilege>2</ipmi_privilege> <ipmi_username/> <ipmi_password/> <templates> <template> <name>Template PING </name> </template> </templates> <groups> <group> <name>Object</name> </group> </groups> <interfaces> <interface> <default>1</default> <type>2</type> <useip>1</useip> <ip>192.168.1.1</ip> <dns/> <port>161</port> <interface_ref>if1</interface_ref> </interface> </interfaces> <applications/> <items/> <discovery_rules/> <macros/> <inventory/> </host> </hosts> </zabbix_export> [guest@localhost csvxml]$
1
|
![]() 277 / 277 / 25
Регистрация: 02.08.2012
Сообщений: 1,232
|
||||||
04.08.2013, 17:21 [ТС] | 8 | |||||
Спасибо большое, завтра утром прочитаю и разберусь.
Добавлено через 16 часов 41 минуту Прошу меня простить за мою глупость но я правильно понял?
0
|
4851 / 3272 / 466
Регистрация: 10.12.2008
Сообщений: 10,570
|
|
04.08.2013, 21:54 | 9 |
{0} - это поле замены
любая строка - это объект класса str, у объекта есть свойства и методы один из методов строки - .format() когда он вызывается с аргументами, он начинает искать поля замены в строке и вставляет вместо них свои аргументы, а затем возвращает получившуюся строку это включение (comprehension), оно для каждого элемента в ряде - списке строк - выполняет метод строки .strip() и составляет новый список, который присваивается ряду из каждой строки в row удаляются пробельные символы по краям у строки hostfmt вызывается метод .format() с аргументами когда новая строка сформирована, она присваивается переменной host четвёртого
1
|
![]() 277 / 277 / 25
Регистрация: 02.08.2012
Сообщений: 1,232
|
|
04.08.2013, 23:32 [ТС] | 10 |
В принципе понял.
0
|
![]() 277 / 277 / 25
Регистрация: 02.08.2012
Сообщений: 1,232
|
|
05.08.2013, 00:01 [ТС] | 12 |
Все, понял. Спасибо большое Вам!
0
|
![]() 277 / 277 / 25
Регистрация: 02.08.2012
Сообщений: 1,232
|
||||||
16.08.2013, 12:33 [ТС] | 13 | |||||
Добрый день accept,
Сегодня руки дорвались до программы, запустил, он ругается на строчку
Код
>python -u "csvxml.py" File "csvxml.py", line 68 print(template.format( hostname = host, ipad = ipad), file=fout) ^ SyntaxError: invalid syntax
0
|
![]() 277 / 277 / 25
Регистрация: 02.08.2012
Сообщений: 1,232
|
||||||
18.08.2013, 15:53 [ТС] | 15 | |||||
Окей, я заменил по своему без with, все заработало.
А такой вопрос: Есть переменная которая хранит строку "192.168.1.0", в новой строчке она может быть "192.168.2.0" ( это не особо важно) Мы делаем программу, которая создает конфиг для например первых пяти Ip-адресов, то есть изменяется только последнее поле. Как я решил данную проблему:
0
|
4851 / 3272 / 466
Регистрация: 10.12.2008
Сообщений: 10,570
|
|||||||||||
18.08.2013, 18:53 | 16 | ||||||||||
что значит без with ? он там не просто так
более общая
за переполнением(границами) октетов следишь до вызова
1
|
![]() 277 / 277 / 25
Регистрация: 02.08.2012
Сообщений: 1,232
|
||||||
18.08.2013, 22:36 [ТС] | 17 | |||||
За тупость простите, но не могу понять зачем:
Я прочитал про функцию map, как я понял она просто применяет аргумент к значению. В octets должен лежать список, так если мы возвращаем такое значение, почему у нас не получается на выходе ".192.168.1.1' ?
0
|
4851 / 3272 / 466
Регистрация: 10.12.2008
Сообщений: 10,570
|
||||||
19.08.2013, 07:51 | 18 | |||||
каждая строка является объектом класса str, у объектов есть свойства и методы
метод .join() - метод любой строки, он принимает набор строк и объединяет их, вставляя строку (у которой вызывается метод) между ними набери
функция принимает строку разделяет её на строки превращает строки в числа проводит операции с числами превращает числа в строки объединяет строки в строку возвращает строку
1
|
19.08.2013, 07:51 | |
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь. Выборка определенных строк из таблицы .csv файла Как в tabpage сделать вывод xml файла Получение строк, содержащих подстроку, из ОГРОМНОГО csv-файла Как считывать и как записывать XML файлы? И вообще,является ли хорошим тоном хранить данные в xml? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |