我需要帮助在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