2

Linux での Python の実行に関して問題が発生しています。私はPythonを学ぼうとしていて、小さなXMLファイルを解析してタグとデータをリストに入れたいと思っていました. しかし、コードを実行するたびに、リスト内の各要素に「u」が追加されます。

[u'world']
defaultdict(<type 'list'>, {u'world': [u'data']})

私のコードは次のとおりです。

import xml.sax

from collections import defaultdict

class TransformXML(xml.sax.ContentHandler):

def __init__ (self):
    self.start_tag_name = -1
    self.tag_data = -1
    self.myDict = defaultdict(list)
    self.tags = []

def startElement(self, name, attrs):
    self.start_tag_name = name
    print name
    print self.start_tag_name

def characters(self, content):
    if content.strip(' \r\n\t') != "":
        self.tag_data = content.strip(' \r\n\t')
        print self.start_tag_name
        self.tags.append(self.start_tag_name)
        self.myDict[self.start_tag_name].append(content.strip(' \r\n\t'))

def endElement(self, name):
    pass

def __del__ (self):
    if self.myDict:
        del self.myDict
        print "deleteing myDict"

問題が何であるかを知っている人はいますか?

4

1 に答える 1

5

その「奇妙な」記号は、基本的にstringorcharacterがユニコードでエンコードされていることを意味します

例えば。文字列がある場合Test:

>>> unicode('Test')
u'Test'
>>> s = unicode('Test')
>>> type(s)
<type 'unicode'>

ドキュメントはこちら

要約すると、pythonドキュメントによると、

...Unicode 文字列は、0 から 0x10ffff までの数字である一連のコード ポイントです。このシーケンスは、メモリ内の一連のバイト (つまり、0 ~ 255 の値) として表す必要があります。Unicode 文字列を一連のバイトに変換する規則は、エンコーディングと呼ばれます。

于 2013-04-06T03:22:27.713 に答える