首页 > 解决方案 > 如何让函数打印单个“\”(反斜杠)?

问题描述

我正在尝试使用 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 = '\\\'在与上述相同的函数中定义。

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

PS-请注意,此问题与此处的其他一些问题不同。问题尤其在于函数内部使用的“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 '\'。

标签: pythonfunctionbackslash

解决方案


这里没有问题。您返回的字符串仅包含一个反斜杠;它只是使用两个反斜杠的那个字符串的字符串表示。相比

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

推荐阅读