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

问题描述

我正在尝试使用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'\'。

解决方法

这里没有问题。您返回的字符串仅包含一个反斜杠;只是该字符串的字符串 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))
,

使用:

a = r"\"

代替:

a = "\\"

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...