2013-04-06 62 views
2

我有一個關於在Linux上運行Python的問題。我試圖學習python,並試圖解析一個小的XML文件,並將標籤和數據放入列表中。但是每次運行代碼時,都會在列表中的每個元素上附加一個'u'。奇數字符追加到Python列表的前面

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

有誰知道這個問題可能是什麼?

+6

這意味着字符串是'unicode'編碼 – Volatility 2013-04-06 03:05:51

+0

謝謝Voltalitiy – FunkyFresh 2013-04-06 04:11:36

回答

5

那怪異'符號基本上意味着stringcharacter以Unicode

EG進行編碼。如果我有一個字符串Test

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

文檔here

綜上所述,根據python文檔,

... Unicode字符串是代碼點,一個序列是從 0到0x10ffff的數字。該序列需要表示爲內存中的一組字節 (意思是,值爲0-255)。將Unicode字符串轉換爲字節序列的規則稱爲編碼。

+0

感謝您的幫助! – FunkyFresh 2013-04-06 04:11:13