Python R如何从xml标记中提取信息
我有一个关于xml解析的问题。 我有带空格的标签,例如Python R如何从xml标记中提取信息,python,xml,r,perl,spaces,Python,Xml,R,Perl,Spaces,我有一个关于xml解析的问题。 我有带空格的标签,例如 <item1 id=rt name ="th"> <point1>1254</point1> <point2>1254</point2> </item> 1254 1254 如何从这些标签中提取id和名称 在接下来的分析中,我需要使用R,但我也可以用perl和python进行文件解析。 最好的解决方案是什么?您可以使用XML包: tt <- '<?xm
<item1 id=rt name ="th">
<point1>1254</point1>
<point2>1254</point2>
</item>
1254
1254
如何从这些标签中提取id和名称
在接下来的分析中,我需要使用R,但我也可以用perl和python进行文件解析。
最好的解决方案是什么?您可以使用
XML
包:
tt <- '<?xml version="1.0" encoding="utf-8"?>
<item id="rt" name ="th">
<point1>1254</point1>
<point2>1254</point2>
</item>
'
library(XML)
xpathSApply(doc,'//item',xmlGetAttr,'id')
[1] "rt"
tt正则表达式怎么样
/=\K\W?\K\W+/g
=\K
查找但不保存=
\W?\K
查找但不保存标记前的潜在引号
\w+
是您的标签
您可以逐行读取文件并将匹配项保存到数组中,如:
my@matches=$line=~/=\K\W?\K\W+/g代码>
然后使用$matches[]
访问各个元素
如果您想进一步使用正则表达式,可以在这里使用正则表达式:
这是真实的数据吗?第一个标记不是格式良好的XML,它缺少id值周围的引号。如果这是您拥有的数据,您可能无法使用XML工具。您更改了输入。正如@mirod在上面指出的,输入没有id=“rt”
,但是id=rt
@simbabque是的,我知道XML的格式非常糟糕(se item1标记不是item)。我的答案是向初学者展示如何使用XML包。这很公平。在这种情况下,我建议指出这一点(你现在这样做了)。否则,他们可能会抱怨它不起作用
tt <- '<item1 id=rt name ="th">
<point1>1254</point1>
<point2>1254</point2>
</item>
'
ll <- readLines(textConnection(tt))
gsub('.*id=(.*)[ ]name.*','\\1',ll[1])
[1] "rt"