投下原始stringpython

在Python中,给定一个variables持有一个string是否有一个快速的方法将其转换成另一个原始stringvariables?

下面的代码应该说明什么后IM …

def checkEqual(x, y): print True if x==y else False line1 = "hurr..\n..durr" line2 = r"hurr..\n..durr" line3 = "%r"%line1 print "%s \n\n%s \n\n%s \n" % (line1, line2, line3) checkEqual(line2, line3) #outputs False checkEqual(line2, line3[1:-1]) #outputs True 

到目前为止我发现的最接近的是%r格式化标志,它似乎返回一个原始的string,尽pipe在单引号内。 有没有更简单的方法来做到这一点像line3 = raw(line1)类的东西?

 "hurr..\n..durr".encode('string-escape') 

另一种方式:

 >>> s = "hurr..\n..durr" >>> print repr(s).strip("'") hurr..\n..durr 

上面显示了如何编码。

 'hurr..\n..durr'.encode('string-escape') 

这种方式将解码。

 r'hurr..\n..durr'.decode('string-escape') 

防爆。

 In [12]: print 'hurr..\n..durr'.encode('string-escape') hurr..\n..durr In [13]: print r'hurr..\n..durr'.decode('string-escape') hurr.. ..durr 

这允许在两个方向上“投射/变形原始弦”。 一个实际的情况是,当json包含一个原始string,我想打印它很好。

 { "Description": "Some lengthy description.\nParagraph 2.\nParagraph 3.", ... } 

我会做这样的事情。

 print json.dumps(json_dict, indent=4).decode('string-escape') 
 >>> v1 = 'aa\1.js' >>> re.sub(r'(.*)\.js', repr(v1).strip("'"), 'my.js', 1) 'aa\\x01.js 

 >>> re.sub(r'(.*)\.js', r'aa\1.js', 'my.js', 1) 'aamy.js' 

 >>> re.sub(r'(.*)\.js', raw(v1), 'my.js', 1) 'aamy.js' 

和更好的原始方法实现

 def raw(text): """Returns a raw string representation of text""" return "".join([escape_dict.get(char,char) for char in text])