原始字符串中会出现额外的反斜杠

时间:2016-02-04 00:55:19

标签: python string

我遇到显示原始字符串时出现的额外反斜杠的问题。我希望原始字符串等于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

1 个答案:

答案 0 :(得分:2)

\\代表escaped backslash。如果它打印得正确,它应该没问题!

为了更好地解释一下,那里没有两个反斜杠。在Python中,反斜杠是一个特殊字符。如果要将其视为普通字符,则必须将其转义。巧合的是,逃避恰恰就是反斜杠所针对的。我不明白你为什么要删除它,事实上 - 我认为你无法做到。单独输入反斜杠意味着下一个字符将被转义。字符串"\\"只包含一个字符(字面反斜杠)。字符串r"\\"包含两个(转义字符和文字反斜杠)。打印出来或在任何类型的I / O中使用时,应将其视为单个字符。

如果以某种方式第二次反斜杠导致问题,可能是因为您尝试将其用作标有r的文字。在使用字符串时,只需删除此r即可将"\\"视为预期的一个字符。