2016-02-04 62 views
0

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

看起来不错。 – kindall

回答

2

\\代表escaped backslash。如果它打印正确,它应该是很好!

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

如果第二个反斜杠以某种方式引起问题,可能是因为您试图将其用作标记为r的文字。只要删除此r时使用该字符串使Python对待"\\"作为一个字符的预期。