投下原始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])