您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

如何在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'"'
python 2022/1/1 18:30:25 有193人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶