• python中repr与codecs的使用(转义字符转义功能的取消与恢复)


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

     
    >>> 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]得到的就是转义成目标结果的字符串



    原文链接:https://www.jianshu.com/p/236fbd879ac8

  • 相关阅读:
    97.5%准确率的深度学习中文分词(字嵌入+Bi-LSTM+CRF)
    TensorFlow教程——Bi-LSTM+CRF进行序列标注(代码浅析)
    对Attention is all you need 的理解
    SpringBoot入门最详细教程
    TensorFlow saved_model 模块
    hadoop无法启动
    信号
    rpcserver不可用
    4444: [Scoi2015]国旗计划|贪心|倍增
    最小公倍数 SRM 661 Div1 250: MissingLCM
  • 原文地址:https://www.cnblogs.com/superbaby11/p/15881915.html
Copyright © 2020-2023  润新知