如何获得函数打印的单个'\'(反斜杠)?
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))
我正在尝试使用 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))