【问题标题】:Python reverse escape charactersPython反向转义字符
【发布时间】:2016-08-11 13:07:00
【问题描述】:

我想将转义字符转换回原来的形式:

>>> myString="\\10.10.10.10\view\a"
>>> myString
'\\10.10.10.10\x0biew\x07'
>>>desiredString=fun(myString)
>>>print desiredString
'\\10.10.10.10\view\a'

我研究了很多,但找不到解决方案 我使用的是 Python2.6。

【问题讨论】:

标签: python string escaping character backslash


【解决方案1】:

理想情况下,您应该使用 python 内置字符串函数或正确解析您的输入数据,以避免这些后转换。事实上,根本不鼓励这些自定义解决方案,但你可以这样做:

def fun(input_str):
    cache = {
        '\'':"\\'",
        '\"':'\\"',
        '\a':'\\a',
        '\b':'\\b',
        '\f':'\\f',
        '\n':'\\n',
        '\r':'\\r',
        '\t':'\\t',
        '\v':'\\v'
    }

    return "".join([cache.get(m,m) for m in list(input_str)])

tests = [
    "\\10.10.10.10\view\a",
    "\'",
    '\"',
    '\a',
    '\b',
    '\f',
    '\n',
    '\r',
    '\t',
    '\v'
]

for t in tests:
    print repr(t)," => ",fun(t)

【讨论】:

    【解决方案2】:
    myString=r"\\10.10.10.10\view\a" 
    myString
    '\\\\10.10.10.10\\view\\a'
    print myString
    \\10.10.10.10\view\a
    

    r'...' 是字节串

    【讨论】:

    • 不完全。 r'...' 是原始字符串文字。在 Python 2 中,所有非 Unicode 字符串都是字节字符串。
    【解决方案3】:

    \v\a 在打印时被解释为特殊字符。不用担心,只需添加另一个反斜杠即可避免这种情况。

    >>> myString="\\10.10.10.10\\view\\a"
    >>> print(myString)
    \10.10.10.10\view\a
    

    编辑: 或者使用repr:

    >>> myString=r"\\10.10.10.10\view\a"
    >>> print myString
    \\10.10.10.10\view\a
    

    【讨论】:

    • 我正在从服务器读取 myString,分配时无法编辑。还有 >>> repr(myString) "'\\\\10.10.10.10\\x0biew\\x07'"
    • 是的,我没想到。那么@BPL 的回答是唯一的办法。
    猜你喜欢
    • 1970-01-01
    • 2012-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-18
    • 1970-01-01
    • 2012-01-11
    • 2011-09-27
    相关资源
    最近更新 更多