避免在字符串中转义双引号

4 投票
3 回答
2904 浏览
提问于 2025-04-18 10:09

有没有一种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()

应该会输出:

           ./'..|'.|| |||||\```````  "  '''''''/||||| ||.`|..`\.

撰写回答