2013-11-09 2 views
1

Как можно заменить в строке следующие символы: R '\ XB0' с г '\ 260', я пытался это сделать с:Как заменить г ' XB0' с г ' 260'

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

Но это не сработает. Проблема заключается в том, что я должен записать данные в файл в восьмеричном формате (например, «\ 260C»), а не в шестнадцатеричном формате и т.д.

+1

вы не хотите, чтобы заменить 'г '\ 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' 

или самый щедрый подход (который оказывается на самом деле, запрошенной ОП)

>>> 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;) magician – user2973395

+0

это работает;) первое решение в порядке! спасибо – user2973395

+0

еще один вопрос, Как я могу избежать двойной обратной косой черты (\\)? Я хочу получить только один;) – user2973395

Смежные вопросы