2013-11-09 62 views
1

如何在字符串替換這些字符:R '\ XB0' 與R '\ 260',我已經嘗試過用做:如何更換R ' XB0' 與R ' 260'

test = u'\xb0C' 
test = test.encode('latin1') 
test = test.replace(r'\xb0', r'\260') 

但它不起作用。問題是,我必須將數據寫入到八進制格式的文件(例如「\ 260」),而不是十六進制格式等

+1

你並不想取代'R'\ xb0''你呢?您要替換*字符*,而不是4個字符的序列。 '.replace('\ xb0',r'\ 260')'本來會更合適。 –

回答

2

你的意思

>>> test.encode('unicode-escape').replace(r'\xb0', r'\260') 
'\\260C' 

>>> ''.join('\\%o' % ord(c) for c in test) 
'\\260\\103' 

或最慷慨的做法(即原來是實際上是由OP要求)

>>> table = {i: unicode(chr(i)) if 32 <= i < 128 else u'\\%o' % i for i in range(256)} 
>>> u'\xb0ABD\260'.translate(table) 
u'\\260ABD\\260' 
+0

太棒了! who'r you;)魔術師 – user2973395

+0

它的工作;)第一個解決方案是OK!謝謝 – user2973395

+0

還有一個問題,我怎樣才能避免雙反斜槓(\\)?我只想得到一個;) – user2973395