我遇到显示原始字符串时出现的额外反斜杠的问题。我希望原始字符串等于9.2\\(4\\)4
,但我会在9.2\\\\(4\\\\)4
变量中获得Primary_Image
。但是,程序会打印9.2\\(4\\)4
。
import re
def Convert_Image_name_for_regex(image):
image = re.sub(r'.*asa|k8.bin.*','',image)
image = image.replace(r"-", r"", 2)
image = image[:1] + r'.' + image[1:]
image = image[:3] + r'\(' + image[3:]
image = image[:6] + r'\)' + image[6:]
return image
Primary_Image = r'asa924-4-k8.bin'
Primary_Image = Convert_Image_name_for_regex(Primary_Image)
print Primary_Image
答案 0 :(得分:2)
\\
代表escaped backslash。如果它打印得正确,它应该没问题!
为了更好地解释一下,那里没有两个反斜杠。在Python中,反斜杠是一个特殊字符。如果要将其视为普通字符,则必须将其转义。巧合的是,逃避恰恰就是反斜杠所针对的。我不明白你为什么要删除它,事实上 - 我认为你无法做到。单独输入反斜杠意味着下一个字符将被转义。字符串"\\"
只包含一个字符(字面反斜杠)。字符串r"\\"
包含两个(转义字符和文字反斜杠)。打印出来或在任何类型的I / O中使用时,应将其视为单个字符。
如果以某种方式第二次反斜杠导致问题,可能是因为您尝试将其用作标有r
的文字。在使用字符串时,只需删除此r
即可将"\\"
视为预期的一个字符。