如何获得函数打印的单个'\'(反斜杠)?

How to get single '\' (backslash) printed by a function?

我正在尝试使用 Jupyter 笔记本打印具有 python 中的功能的内容。例如,假设我想要一个打印 '\x' 的函数,其中 'x' 是函数的参数。

def mu():
    a="\"
    b="mu_"
    return (a+b)

这应该给我 '\mu_' 作为输出。但它给我 '\\mu_' 作为输出。我先尝试使用单个 '\',但出现错误。我在堆栈溢出中找到了该问题的答案,它允许使用双反斜杠打印单个 '\',即 '\\' 但这仅适用于 print() 命令,而不适用于函数内部。这在函数内部不起作用。有没有办法让上面的函数按照我的意愿工作,并在输出中得到一个 '\' 作为 '\mu_'?

编辑:任何奇数个反斜杠都会发生这种情况。但是当我使用偶数个反斜杠时,我会得到相同的偶数个反斜杠。对于奇数,错误是:

  File "<ipython-input-25-e1de4609aed4>", line 2
a='\\'
       ^
SyntaxError: EOL while scanning string literal

针对上述错误,我在与上述相同的函数中定义了a = '\\'

我希望我能把问题表达清楚,如果没有请在评论中告诉我。

P.S.- 请注意,此问题与此处的其他一些问题不同。问题尤其在于函数内部使用的 'return' 命令。我刚刚意识到这一点。如果我使用 print(),它会按我想要的方式工作(之前在这个平台上被问过。)但我想知道是否可以使用函数使其工作。

因此问题的缩小版本与 return 命令有关。

编辑: 使用函数解决问题对我来说很重要,因为我需要将这个 '\mu_' 添加到数组中。打印它是不够的。见以下代码:

def ten(n,r):
    tiu = []
    for i in range(1,n+1):
        index = str(i)
        u = 'u^' + '\mu_' + index
        tiu.append(u)
    return (tiu)

在下一个单元格中,我键入:

ten(4,1)

给出输出:

['u^\mu_1', 'u^\mu_2', 'u^\mu_3', 'u^\mu_4']

现在,如果我在函数中使用 2 个“\”,输出不会发生任何变化。但是,如果我使用 3 个“\”,我会在输出中得到 4 个“\”。

使用:

a = r"\"

而不是:

a = "\"

这里没有问题。您返回的字符串仅包含一个反斜杠;只有该字符串的字符串 representation 使用了两个反斜杠。比较

>>> r'\mu_'
'\mu_'
>>> print(r'\mu_')
\mu_

在 python 中打印列表时,会在后台调用 repr() 方法。存储的字符串是'\',它只是表示为'\'。

如果您单独打印每个元素,它会显示 literal value 而不是 represented value:

print(ten(4, 1)[1])

输出:

u^\mu_2

你也可以尝试把它的字符编码传给chr

print(chr(92))