避免在字符串中转义双引号
有没有一种Python的组件可以让我绕过中间的引号?就是说,能不能在打印的时候指定一个开始和结束的标记,这样在这两个标记之间的内容就可以被直接理解,而不管这些内容原本是什么样的?
我想在程序中打印一行有趣的ASCII艺术,但因为中间出现了引号,所以我在打印时遇到了一些错误,这只是我遇到的错误之一:
print" ./'..|'.|| |||||\``````` " '''''''/||||| ||.`|..`\."
^
SyntaxError: EOL while scanning string literal
补充:在考虑字符串的原始解释时,如果你的行中出现了三重引号,也可能会遇到三重引号的退出问题。
3 个回答
0
顺便提一下
这不是在回答问题。只是想说:先检查一下你是否真的需要回答上面的问题。
举个例子,当你在Python中运行SQL查询时,你可能会觉得需要处理一下要传递的字符串值,因为它们可能包含特殊符号。但其实,你根本不需要担心这些,甚至不应该去担心。你可以参考一下这个链接:Python MySQL转义特殊字符。实际上,你的目标应该是避免自动转义的情况(可以看看这个链接:如何防止Python中自动转义特殊字符,这又和r
有关)。如果可以的话,最好把处理特殊字符的工作交给库函数来做,然后把你的字符串作为参数传递过去。
这样一来,你就可以把字符串当作普通字符串来处理,让MySQL库帮你搞定如何引用和转义它。
6
为什么不使用一个三重引号字符串呢?这种字符串的两端都是"""
。
>>> print """ ./'..|'.|| |||||\``````` " '''''''/||||| ||.`|..`\."""
./'..|'.|| |||||\``````` " '''''''/||||| ||.`|..`\.
>>>
需要注意的是,如果字符串里面有和两端相同的三重引号,你还得把它们进行转义,也就是加上特殊符号来避免混淆:
>>> print """ \""" """
"""
>>>
5
另一种方法就是把这些行放在一个纯文本文件里,然后像在Linux/Unix系统中那样读取它们:
$ cat > my_file.txt
./'..|'.|| |||||\``````` " '''''''/||||| ||.`|..`\.
^D <- control-d means end of file input from the command line
接着用Python来处理:
with open('/path/my_file.txt') as f:
print f.read()
应该会输出:
./'..|'.|| |||||\``````` " '''''''/||||| ||.`|..`\.