Python скрипт для извлечения строк и целых между xml тегами - PullRequest
1 голос
/ 23 января 2020

Мне нужна помощь для извлечения вещей между тегами XML. Например:

 <TimeStamp>DT#2019-08-27-08:20:51</TimeStamp>' ,  '<UserName>admin</UserName>' ,  '<Generator>SG-22-6500</Generator>' ,  '<GenFreq>20</GenFreq>' ,  '<MaxForce>10000</MaxForce>', '<MaxPower>6500</MaxPower>, 

А теперь я хочу иметь значения Даты и строки между тегами XML. Выходные данные i wi sh for будут:

2019-08-27-08:20:51,admin,SG-22-6500,20,10000

, и если между тегами ничего нет, просто выведите, например, nA.

я уже попробовал библиотеку XML .etree, но я думаю, что моя проблема в том, что мои значения не берутся из XML файла…

С наилучшими пожеланиями!

Ответы [ 3 ]

1 голос
/ 23 января 2020

Если у вас большой XML, я бы порекомендовал Красивый суп

from bs4 import BeautifulSoup as bsoup
[bsoup(x).text for x in xml_list]

В качестве альтернативы, если вам просто нужно вытащить текст из одного тега вместо большой файл, попробуйте использовать регулярное выражение.

import re
[re.sub('<.*?>','',x) for x in xml_list]
0 голосов
/ 23 января 2020

Можно использовать встроенный xml парсер

import xml.etree.ElementTree as ET

x = [
    "<TimeStamp>DT#2019-08-27-08:20:51</TimeStamp>",
    "<UserName>admin</UserName>",
    "<Generator>SG-22-6500</Generator>",
    "<GenFreq>20</GenFreq>",
    "<MaxForce>10000</MaxForce>",
    "<MaxPower>6500</MaxPower>",
]

for i in x:
    tree = ET.ElementTree(ET.fromstring(i)).getroot()
    print(tree.text)

Отпечатки

DT#2019-08-27-08:20:51
admin
SG-22-6500
20
10000
6500
0 голосов
/ 23 января 2020

Использование split:

xml_var = '<TimeStamp>DT#2019-08-27-08:20:51</TimeStamp>'
xml_inner = xml_var.split('<TimeStamp>')[1].split('</TimeStamp>')[0]
print(xml_inner)

Возвращает все, что находится между тегом TimeStamp. Не нужно ничего переусердствовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...