相关疑难解决方法(0)

如何在python中编写字符串文字而不必转义它们?

有没有办法在python中声明一个字符串变量,以便它内部的所有内容都自动转义,或者有它的文字字符值?

不是要问如何用斜线来逃避引号,这是显而易见的.我要求的是一个通用的方法,使字符串文字中的所有内容,以便我不必手动完成并转义非常大的字符串的所有内容.有人知道解决方案吗?谢谢!

python string escaping

85
推荐指数
4
解决办法
9万
查看次数

为什么Python不会在__doc__中自动转义'\'?

似乎某些转义字符在docstring中仍然很重要.例如,如果我们运行python foo.py(Python 2.7.10),它将发出错误,如ValueError: invalid \x escape.

def f():
    """
    do not deal with '\x0'
    """
    pass
Run Code Online (Sandbox Code Playgroud)

实际上,似乎正确的docsting应该是:

    """
    do not deal with '\\\\x0'
    """
Run Code Online (Sandbox Code Playgroud)

另外它也会影响import.

对于Python 3.4.3+,错误消息是:

  File "foo.py", line 4
    """
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 24-25: truncated \xXX escape
Run Code Online (Sandbox Code Playgroud)

我觉得有点奇怪,因为我认为它只会对__doc__模块本身产生影响并且没有任何副作用.

为什么设计如此?它是Python中的缺陷/错误吗?

注意

我知道"""和原始文字的含义,但我认为python解释器应该能够特别处理docstring,至少在理论上.

python docstring

10
推荐指数
1
解决办法
2037
查看次数

在运行时删除 Python 中的反斜杠

我需要一种方法让我的函数在运行时接收一个字符串并删除反斜杠,同时保留它前面的字符。所以对于 \a 我必须得到一个。这也必须适用于像 \e -> e 这样的非转义字符。

我已经在互联网上寻找解决此问题的一般解决方案,但似乎没有。我发现的最佳解决方案是使用字典从头开始构建字符串,例如:如何防止 Python 中的特殊字符自动转义

escape_dict={'\a':r'\a',
         '\b':r'\b',
         '\c':r'\c',
         '\f':r'\f',
         '\n':r'\n',
         '\r':r'\r',
         '\t':r'\t',
         '\v':r'\v',
         '\'':r'\'',
         '\"':r'\"',
         '\0':r'\0',
         '\1':r'\1',
         '\2':r'\2',
         '\3':r'\3',
         '\4':r'\4',
         '\5':r'\5',
         '\6':r'\6',
         '\7':r'\7',
         '\8':r'\8',
         '\9':r'\9'}
def raw(text):
    """Returns a raw string representation of the string"""
    new_string=''
    for char in text:
        try: 
            new_string += escape_dict[char]
        except KeyError: 
            new_string += char
    return new_string
Run Code Online (Sandbox Code Playgroud)

然而,由于转义数字和转义字母之间的冲突,这通常会失败。使用像 \001 而不是 \1 这样的 3 位数字也会失败,因为输出中会有额外的数字,这违背了目的。我应该简单地删除反斜杠。其他基于编码的建议解决方案,例如在 Python 中处理字符串中的转义序列

也不起作用,因为这只是将转义字符转换为十六进制代码。\a 被转换为 \x07。即使以某种方式删除它,字符 a 仍然丢失。

python string character-encoding

6
推荐指数
1
解决办法
124
查看次数

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

是否有Python的组件允许我绕过中间引号?在中,您是否可以指定主启动和停止打印调用,以便解释主启动和停止之间的所有内容,无论该元素最初代表什么?

我试图在程序中打印这行有趣的ASCII,这只是由于中间引号弹出而导致错误的行之一:

print"           ./'..|'.|| |||||\```````  "  '''''''/||||| ||.`|..`\."
                                                                      ^
SyntaxError: EOL while scanning string literal
Run Code Online (Sandbox Code Playgroud)

编辑:在考虑字符串文字的原始解释时,如果三重引号出现在您的行中,您还可以在原始解释中遇到三重引用的退出.

python string escaping

3
推荐指数
2
解决办法
1048
查看次数

标签 统计

python ×4

string ×3

escaping ×2

character-encoding ×1

docstring ×1