如何在Python中获取字符串的原始表示形式?

如何在Python中获取字符串的原始表示形式?,第1张

如何在Python中获取字符串的原始表示形式

rawstring表示的问题在于,您无法以可移植的方式(即,不使用控制字符)来表示所有内容。例如,如果您的字符串中有换行符,则必须将字符串从字面上断开到下一行,因为它不能表示为rawstring。

也就是说,获取原始字符串表示形式的实际方法是您已经提供的:

"r'{}'".format(regex.pattern)

rawstrings的定义是没有应用任何规则,只是它们以它们开头的引号结尾,并且您可以使用反斜杠转义该引号。因此,例如,您不能像

""
原始字符串表示形式那样存储等效的字符串(
r""
产生SyntaxError和
r"\"
yields
"\"
)。

如果您确实要执行此 *** 作,则应使用类似以下的包装器:

def rawstr(s):    """    Return the raw string representation (using r'') literals of the string    *s* if it is available. If any invalid characters are encountered (or a    string which cannot be represented as a rawstr), the default repr() result    is returned.    """    if any(0 <= ord(ch) < 32 for ch in s):        return repr(s)    if (len(s) - len(s.rstrip("\"))) % 2 == 1:        return repr(s)    pattern = "r'{0}'"    if '"' in s:        if "'" in s: return repr(s)    elif "'" in s:        pattern = 'r"{0}"'    return pattern.format(s)

测试:

>>> test1 = "\">>> test2 = "foobar n">>> test3 = r"a valid rawstring">>> test4 = "foo \\">>> test5 = r"foo \">>> test6 = r"'">>> test7 = r'"'>>> print(rawstr(test1))'\'>>> print(rawstr(test2))'foobar n'>>> print(rawstr(test3))r'a valid rawstring'>>> print(rawstr(test4))'foo \\'>>> print(rawstr(test5))r'foo \'>>> print(rawstr(test6))r"'">>> print(rawstr(test7))r'"'


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5663168.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存