我只想打印原始字符串。
[案例1]我知道put" r"在字符串可以工作之前
<body><%= Encode.forHtml(UNTRUSTED) %></body>
[案例2]但是当它是变量
时print r'123\r\n567"45'
>>`
123\r\n567"45
是否有任何功能可以打印aaa,效果与Case1相同?
答案 0 :(得分:0)
如果您真正想要的只是打印原始字符串,而不是在文字前加r
,则可能需要使用python本机函数repr
。 E.g。
>>> aaa = '123\r\n567"45'
>>> print repr(aaa)
'123\r\n567"45'
在这个(确切)情况下等同于
>>> print repr('123\r\n567"45')
'123\r\n567"45'
答案 1 :(得分:0)
答案 2 :(得分:0)
使案例2像案例1一样工作的显而易见的方法是在赋值语句中使用原始字符串:
aaa = r'123\r\n567"45'
现在,当您打印aaa
时,您将获得实际的反斜杠以及r
和n
个字符,而不是回车符和换行符。
如果您实际从其他来源(而不是使用字符串文字)加载aaa
,那么您的任务会更复杂一些。您实际上需要以某种方式转换字符串以获得所需的输出。
使用repr
函数关闭的一种简单方法是使用aaa = some_function() # returns '123\r\n567"45' and some_function can't be changed
print repr(aaa)
函数:
print repr(aaa)[1:-1]
这不会做你想要的,因为它会在字符串的文本周围加上引号。如果您关心这一点,可以用切片删除它们:
str.replace
另一种方法是手动转换您想要转义的字符,例如使用str.translate
或print aaa.replace('\r', r'\r').replace('\n', r'\n')
。如果您只关心逃避一些特殊角色而不是其他角色,这很容易做到。
str.encode
最后一个选项是将unicode-escape
与名为print aaa.encode('unicode-escape')
的特殊字符集一起使用,它将转义所有不可打印的ASCII字符:
str.encode
但这仅适用于Python 2中的预期。在Python 3中,bytes
始终会返回decode
个实例,您需要再次str
才能获得aaa.encode('unicode-escape').decode('ascii')
(ARectF
,但是它真的很难看。