• html内嵌javascript中unicode的处理


    接着上一篇爬虫处理,发现内嵌javascript里使用的中文字符是以unicode编码\uxxxx形式出现。

    fnick=\u5200\u5200\u72d7\u7ae5\u8bdd\u96c6\">\n

    但python用正则表达式读取的时候是把这些\uxxxx当作ascii码来处理,于是为了转义,在每个字符前又加了反斜杠,成为\\uxxx。

    a='\\u5200\\u5200\\u72d7\\u7ae5\\u8bdd\\u96c6'

    所以问题就是怎么把这个字符改成python能正常辨认的字符串str类型。

    python中相关对象分str和unicode,可以用type命令查看。那么其实a的对象是str,编码则是ascii

    >>> type(a)
    <type 'str'>
    >>> chardet.detect(a)
    {'confidence': 1.0, 'encoding': 'ascii'}

    而对于python,要赋值一个unicode对象可以使用

    >>> b=u'\u5200\u5200\u72d7\u7ae5\u8bdd\u96c6'
    >>> print b
    刀刀狗童话集
    >>> type(b)
    <type 'unicode'>

    这样子再配合exec函数就可以成功转换了,然后只需要把unicode对象encode成str对象就行了。

    >>> exec "c=u'"+a+"'"
    >>> c
    u'\u5200\u5200\u72d7\u7ae5\u8bdd\u96c6'
    >>> d=c.encode('utf-8')
    >>> d
    '\xe5\x88\x80\xe5\x88\x80\xe7\x8b\x97\xe7\xab\xa5\xe8\xaf\x9d\xe9\x9b\x86'
    >>> print(d)
    刀刀狗童话集
    >>> chardet.detect(d)
    {'confidence': 0.98999999999999999, 'encoding': 'utf-8'}
  • 相关阅读:
    Event bubbling
    input/change event practice
    Form event
    Event_Object
    DOM_this keyword
    Random color generator exercise
    DOM_events_addEventListener
    Spring值SpEL
    Spring之使用外部属性文件
    Spring之Bean的作用域
  • 原文地址:https://www.cnblogs.com/sickboy/p/2312532.html
Copyright © 2020-2023  润新知