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で始まる文字列uは、Unicode文字列リテラルです。XMLにはUnicodeデータが含まれているため、XMLパーサーはデータを正しい型(Pythonunicode())で返します。

それらを削除する必要はありません、問題はありません。Python Unicode HOWTOでUnicodeとPythonについて読みたいと思うかもしれませんが、ここでは問題はありません。

これらは数値であるため、Unicode値を直接floatインスタンスに変換できます。

于 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ことを示します。同様に、コードはオブジェクトのリストを生成します。リストを印刷すると、Pythonはリスト内の各要素のを印刷します。これがあなたが見る理由ですtextunicodestrunicoderepr

[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 に答える