2013-08-05 84 views
2

我不知道为什么我找不到它,但我想用python替换特殊字符'\'在Python中替换''字符

我有一个字符串内我有'\'字符,但我有信心找到解决方案,用' - '代替它。 这就是发生的事情,而我试图取代,

>>> x = 'hello\world' 
>>> x 
'hello\\world' 
>>> x.replace('\', '-') 
    File "<stdin>", line 1 
    x.replace('\', '-') 
SyntaxError: EOL while scanning string literal 

编辑: 会尝试这一点,在Eclipse IDLE

x = 'hello\world' 
print x 
x.replace('\\', '-') 
print x 

输出:

hello\world 
hello\world 
+1

退出反斜杠:''你好\ \世界'.replace('\\',' - ')' – falsetru

+0

请检查编辑! – OpenCurious

+5

@Heliconia:'replace'不改变字符串,它会返回一个新字符串。你需要说的是'x = x.replace('\',' - ')'。 – RichieHindle

回答

7

您需要使用另一个反斜杠进行转义:

x.replace('\\', '-') 

反斜杠是特殊的,因为它们被用于引入非打印字符,如换行符为一个字符串。

这也是您如何将'字符添加到'引用的字符串,这是Python认为您正在尝试执行的操作。它看到\'并将其解释为字符串中的文字引号,而不是让'结束字符串。然后它到达字符串的末尾,并在字符串结尾之前找到EOL(“行尾”)。

要引入一个实数反斜杠,您需要将其加倍。您可以看到,Python在打印此处的初始字符串表示形式时执行了此操作:

>>> x 
'hello\\world' 

请注意双反斜杠。

在首先指定字符串时,您应该使用双反斜杠。不需要它的原因是\w不是特殊字符,所以它被解释为文字反斜杠和w。如果你说'Hello\now'你会有一个换行符的字符串。

您也可以通过在r之前加上来标记字符串为“原始”字符串。这标志着字符串没有资格进行特殊字符的替换。

1

\'被解释为特殊字符。退出:

x.replace('\\', '-') 
2

根据docs

反斜杠(\)字符用于转义 否则具有特殊含义的字符,例如换行,反斜杠本身, 或引号字符。

你需要逃避反斜杠与另一个反斜杠:

x.replace('\\', '-') 
0
在蟒蛇的字符串

X ='你好\世界 被替换为x = “你好\世界”

所以要实现你必须写

x.replace('\\','-')