2011-12-19 33 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

相关问题