Python R如何从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

我有一个关于xml解析的问题。 我有带空格的标签,例如

<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"