Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:替换斜杠_Python_String - Fatal编程技术网

Python:替换斜杠

Python:替换斜杠,python,string,Python,String,我得到了一些带有百分号的unicode,我想改成反斜杠。我知道您需要一个额外的反斜杠作为转义序列,但当我执行此操作时,replace()给了我两个反斜杠: >>> s ="%20%u200F%u05D1%u05E8%u05DB%u05EA%u200F%20%u200F%u05D4%u05E8%u05D9%u05D7%u200F%20%u200F%u05D5%u05D1%u05E8%u05DB%u05EA%u200F%20%u200F%u05D4%u05D5%u05D3%u05D

我得到了一些带有百分号的unicode,我想改成反斜杠。我知道您需要一个额外的反斜杠作为转义序列,但当我执行此操作时,
replace()
给了我两个反斜杠:

>>> s ="%20%u200F%u05D1%u05E8%u05DB%u05EA%u200F%20%u200F%u05D4%u05E8%u05D9%u05D7%u200F%20%u200F%u05D5%u05D1%u05E8%u05DB%u05EA%u200F%20%u200F%u05D4%u05D5%u05D3%u05D0%u05D4"
>>> s.replace("%","\")
File "<stdin>", line 1
s.replace("%","\")                  
SyntaxError: EOL while scanning string literal

>>> s.replace("%","\\")
'\\20\\u200F\\u05D1\\u05E8\\u05DB\\u05EA\\u200F\\20\\u200F\\u05D4\\u05E8\\u05D9\\u05D7\\u200F\\20\\u200F\\u05D5\\u05D1\\u05E8\\u05DB\\u05EA\\u200F\\20\\u200F\\u05D4\\u05D5\\u05D3\\u05D0\\u05D4'
>>s=“%20%u200F%u05D1%u05E8%u05DB%u05EA%u200F%20%u200F%u05D4%u05E8%u05D9%u05D7%u200F%20%u200F%u05D5%u05D1%u05E8%u05DB%u05EA%u200F%20%u200F%u05D4%u05D5%u05D3%u05D0%u05D4”
>>>s.替换(“%”、“\”)
文件“”,第1行
s、 替换(“%”,“\”)
SyntaxError:扫描字符串文字时下线
>>>s.替换(“%”、“\\”)
“\\20\\u200F\\u05D1\\u05E8\\u05DB\\u05EA\\u200F\\20\\u200F\\u05D4\\u05E8\\u05D9\\u05D7\\u200F\\20\\u200F\\u05D5\\u05D1\\u05E8\\u05DB\\u05EA\\u200F\\20\\u200F\\u05D4\\u05D5\\u05D3\\u05D0\\u05D4”

'r'
限定符也不工作。有什么想法吗?

这只是python调用字符串
\uuuu repr\uuuu
,因为您在REPL中,
\uu repr\uuuu
会转义
\
字符,从而提供您看到的输出

使用
打印
,它将使用字符串
\uuuu str\uuuu
,将获得正确的输出:

print(s.replace("%","\\"))    
\20\u200F\u05D1\u05E8\u05DB\u05EA\u200F\20\u200F\u05D4\u05E8\u05D9\u05D7\u200F\20\u200F\u05D5\u05D1\u05E8\u05DB\u05EA\u200F\20\u200F\u05D4\u05D5\u05D3\u05D0\u05D4

也就是说,替换发生得很好。

这只是python调用字符串
\uuu repr\uuu
,因为您在REPL中,
\uu repr\uuu
将转义
\
字符以提供您看到的输出

使用
打印
,它将使用字符串
\uuuu str\uuuu
,将获得正确的输出:

print(s.replace("%","\\"))    
\20\u200F\u05D1\u05E8\u05DB\u05EA\u200F\20\u200F\u05D4\u05E8\u05D9\u05D7\u200F\20\u200F\u05D5\u05D1\u05E8\u05DB\u05EA\u200F\20\u200F\u05D4\u05D5\u05D3\u05D0\u05D4

也就是说,替换发生得很好。

就像必须键入两个反斜杠才能输入一个一样,Python在显示带引号的字符串时,会显示两个反斜杠以指示它是文字反斜杠
'\\x41'
是四个字符,
'\x41'
是一个字符(相当于
'A'
)。这是一个调试功能,因此您可以看到不可打印的字符,例如,并告诉差异

>>> a = '\xa0\\xa0'
>>> a
'\xa0\\xa0'
>>> print(a)
 \xa0

就像必须键入两个反斜杠才能输入一个一样,Python在显示带引号的字符串时,会显示两个反斜杠以指示它是文字反斜杠
'\\x41'
是四个字符,
'\x41'
是一个字符(相当于
'A'
)。这是一个调试功能,因此您可以看到不可打印的字符,例如,并告诉差异

>>> a = '\xa0\\xa0'
>>> a
'\xa0\\xa0'
>>> print(a)
 \xa0

您使用的是Python2还是Python3?您使用的是Python2还是Python3?