1

我有一个包含如下元素的 XML 文件:

<RMS>[14.470156174, 14.470156174, 14.485567944, 14.496014765]</RMS> 

我想得到一个包含所有元素的列表

所以我用以下代码尝试了一些正则表达式:

      string = dom.getElementsByTagName('RMS')[0].toxml()
      string2 = re.findall("[\-]*[0-9]*\.[0-9]*", string)

现在,当我想打印列表时,它看起来像这样:

      [u'14.470156174', u'14.470156174', u'14.485567944', u'14.496014765']

“你”是怎么回事?
有什么想法可以解决这个问题吗?感谢您的帮助。

4

2 回答 2

5

以 a 开头的字符串uunicode 字符串文字。由于 XML 包含 unicode 数据,XML 解析器以正确的类型返回您的数据,即 pythonunicode()类型

你不需要删除它们,你没有问题。您可能想在Python Unicode HOWTO中阅读有关 Unicode 和 Python 的内容,但这里没有问题。

由于这些是数字,因此您可以将 unicode 值直接转换为浮点实例。

于 2012-11-08T16:09:01.673 回答
0

这里不需要使用正则表达式。实际上,您的正则表达式可能不适用于某些浮点数,例如1.4e1.

由于您使用的是 minidom,您可以这样做:

import xml.dom.minidom as minidom
import ast

content = "<RMS>[14.470156174, 14.470156174, 14.485567944, 14.496014765]</RMS> "
dom = minidom.parseString(content)
text = dom.getElementsByTagName('RMS')[0].childNodes[0].wholeText

如果你

print(text)

你得到

[14.470156174, 14.470156174, 14.485567944, 14.496014765]

但如果你

print(repr(text))

你得到

u'[14.470156174, 14.470156174, 14.485567944, 14.496014765]'

u表示这是text一个unicode对象,而不是一个str对象。同样,您的代码会生成一个unicode对象列表。打印列表时,Python 会打印列表repr中每个元素的 。这就是为什么你看到

[u'14.470156174', u'14.470156174', u'14.485567944', u'14.496014765']

现在重新阅读您的问题后,我看到您想要text. 由于它们是数字,我假设您想要一个浮点数列表。在这种情况下,您可以使用ast.literal_eval

values = ast.literal_eval(text)
print(values)

产量

[14.470156174, 14.470156174, 14.485567944, 14.496014765]

values浮点数列表在哪里。

于 2012-11-08T16:10:08.537 回答