在stackoverflow上已经提出过类似的问题,但是没有一个答案可以同时处理带有重音字符(例如àéï)和特殊字符(例如制表符或回车符)的字符串。
采用以下2.7 python函数:
def print_escaped(string):
print 1, type(string)
print 2, string
print 3, repr(string)
print 4, string.encode('string_escape')
print 5, string.decode('utf-8')
print 6, string.decode('utf-8').encode('unicode_escape')
print 7, repr(string.decode('utf-8'))
使用输入abécd\r\t\n
调用时,将打印:
1 <type 'str'>
2 abécd
3 'ab\xc3\xa9cd\r\t\n'
4 ab\xc3\xa9cd\r\t\n
5 abécd
6 ab\xe9cd\r\t\n
7 u'ab\xe9cd\r\t\n'
如何在屏幕上打印此字符串,只需abécd\r\t\n
?我想逃避所有控制序列,但保持所有“正常”可读代码点不受影响。
答案 0 :(得分:1)
mappings = {"\r":"\\r","\n","\\n","\t","\\t",...}
print( "".join(mappings.get(ltr,ltr) for ltr in my_string))
或
escaped = "\r\n\t..."
print("".join(repr(ltr) if ltr in escaped else ltr for ltr in my_string))
或
print(re.sub("(\s)",lambda m:repr(m.group(0)),my_string)