用于提取 xml 标记之间的字符串和整数的 Python 脚本



我需要帮助在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标签之间有值日期和字符串。我希望的输出是:

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

如果标签之间没有任何内容,例如打印 n.A。

我已经尝试了库 XML.etree,但我认为我的问题是,我的值不是来自 XML 文件......

此致敬意!

如果你有一个大的XML,我会推荐美丽的汤

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

或者,如果您只需要从单个 Tag 而不是大文件中提取文本,请尝试使用正则表达式。

import re
[re.sub('<.*?>','',x) for x in xml_list]

使用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标记之间的任何内容。无需过度设计任何东西。

您可以使用内置的 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

最新更新