2011-12-19 35 views
0

在源文件中,我有線內的下列數據項(如,LEN = 11):保持數據以原始模式,同時傳遞到re.match

(?i:\'sa\') 

當我將它傳遞給一個re.match,匹配(.groupdict())的值,寫入到一個文件中,似乎是:

(?i:\sa\) 

(LEN = 9)

問題是,如何對我保存值raw(如以下示例中的b), re.matchfile.write之間

>>> a = '(?i:\'sa\')' 
>>> b = r'(?i:\'sa\')' 
>>> len(b) 
11 
>>> len(a) 
9 
>>> len(b) 
11 
>>> print b 
(?i:\'sa\') 

注意,因爲我處理由第三方提供龐大而複雜的文件,我不想我也不能從'a\'b'"b'b"改變,但必須保持事物的本來面目。

回答

2

也許string_escape是你所需要的:

>>> s = raw_input() 
(?i:\'sa\') 
>>> s 
"(?i:\\'sa\\')" 
>>> len(s) 
11 
>>> s.decode('string_escape') 
"(?i:'sa')" 
>>> len(s.decode('string_escape')) 
9 
+0

做得好!並不知道這種解碼功能。 – 2011-12-19 13:00:16

相關問題