2017-02-21 89 views
0

是否有影响功能r'some string'什么是r-前缀的函数?

例如,我们有一些变量s='a:b\nc'。我们想在稍后的某个地方转义它,那么什么功能可以做到这一点?

re.escape转义:太,所以它不等同于r-前缀。基本上r等价函数应该给a:b\\nc作为一个原始字符串,而不是a\:b\\nc,对不对?

+2

我不认为'r'做你认为它做。 –

+3

[Python原始字符串]的可能重复(http://stackoverflow.com/questions/4415259/python-raw-strings) –

+1

一旦字符串已经被解析并且*在内存*中,那么就没有'r '。例如,假设我有'x ='a:\ u0041'',你希望你的函数对'x'做什么?值“x”等于文字“a a:A”。如果你想要一个''a:\'',这就是'r'所能做的,那么就没有办法做到这一点,因为解释器不再提供原始文字表示。 (至少,不是没有某种心理手动重新编码代码文件或类似的东西在墙上。)不清楚你想要什么结果。 – jpmc26

回答

0

您可能对字符串文字的原始前缀实际上做了什么有点困惑,但无论如何,我认为我理解了这个问题:您想要跳过反斜杠。

这是我能找到的最接近的东西。有可能是更好的方法:

>>> import codecs 
>>> s = 'a:b\nc' 
>>> codecs.encode(s, 'unicode-escape').decode('utf-8') 
'a:b\\nc' 
+0

谢谢,之前试过'codecs.escape_encode',它没有工作。现在我明白了,在此之前,我应该将字符串转换为字节。但是这会导致3个步骤,你使用'codecs.encode'的方法是两个。 – Nick

+0

目前尚不清楚OP想要什么。考虑字符串“'a:\ u0041''。 OP是否想要'a a:A'或''a:\\ u0041''?你的答案返回前者。 – jpmc26

+0

@ jpmc26你是对的,但如果他们想要更多的帮助,他们可以澄清它。 – wim

相关问题