美文网首页
python中repr与codecs的使用(转义字符转义功能的取

python中repr与codecs的使用(转义字符转义功能的取

作者: sexy_cyber | 来源:发表于2018-07-12 15:46 被阅读46次

    注意一点:所见并非所得:
    比如:

    >>> x = r'((function(){var a\x3d2368684709;var b\x3d707691395;return 425382+\x27.\x27+(a+b)})());'
    >>> x
    '((function(){var a\\x3d2368684709;var b\\x3d707691395;return 425382+\\x27.\\x27+(a+b)})());'
    >>> print(x)
    ((function(){var a\x3d2368684709;var b\x3d707691395;return 425382+\x27.\x27+(a+b)})());
    >>> 
    

    同一个X,它什么都没干,但是你看的三个结果都是不一样的,整整要关注的是程序内存中变量类型是什么样的;

    一、取消转义:

    如果想在爬虫程序中使含有转义字符,比如"\u“,"\x"等等取消其转义功能,这个时候不可能在变量前加上'r'来取消转义的;
    python 内置函数repr(),能够使变量转变为源字符串,达到取消转义字符转义的功能。

    >>> x = '((function(){var a\x3d2368684709;var b\x3d707691395;return 425382+\x27.\x27+(a+b)})());'
    >>> repr(x)
    

    二、恢复转义:

    如果我们就是想拿到转义后的结果,但是,爬虫从网络上获取的结果就是被取消转义了的结果,这个时候时候如何恢复其转义功能?
    pyhton 依旧有内置函数codecs

    >>> x = r'((function(){var a\x3d2368684709;var b\x3d707691395;return 425382+\x27.\x27+(a+b)})());'
    >>> import codecs
    >>> codecs.getdecoder("unicode_escape")(x)[0]
    "((function(){var a=2368684709;var b=707691395;return 425382+'.'+(a+b)})());"
    >>> 
    
    

    codecs.getdecoder("unicode_escape")(x)[0]得到的就是转义成目标结果的字符串

    相关文章

      网友评论

          本文标题:python中repr与codecs的使用(转义字符转义功能的取

          本文链接:https://www.haomeiwen.com/subject/amkrpftx.html