python编码转换在线_python实现html代码转义转换

之前记录了从网上翻来的 Python HTMLParser处理HTML转义字符 文档。不过在对带有中文字符的内容进行处理的时候会报错,代码如下:

# cat html.py

#/usr/bin/python

#coding=utf-8

import HTMLParser

html_parser = HTMLParser.HTMLParser()

title = 'eclipse功能<template>学习。e.g : 快速在代码中插入时间戳 - 361way.com'

newtitle = html_parser.unescape(title)

print newtitle

报错内容如下:

Traceback (most recent call last):

File "html.py", line 7, in

newtitle = html_parser.unescape(title)

File "/usr/lib64/python2.6/HTMLParser.py", line 390, in unescape

return re.sub(r"&(#?[xX]?(?:[0-9a-fA-F]+|w{1,8}));", replaceEntities, s)

File "/usr/lib64/python2.6/re.py", line 151, in sub

return _compile(pattern, 0).sub(repl, string, count)

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 7: ordinal not in range(128)

解决方法如下:

#/usr/bin/python

#coding=utf-8

import HTMLParser

import sys

reload(sys)

sys.setdefaultencoding('utf-8')

html_parser = HTMLParser.HTMLParser()

title = 'eclipse功能<template>学习。e.g : 快速在代码中插入时间戳 - SegmentFault'

newtitle = html_parser.unescape(title)

print newtitle

需要载入sys模块,重新设置默认编码为utf8,就不会出错了。不过要处理的内容只不过是一个文章的title部分,而常用的html转义内容也就如下几个:字符十进制转义字符

"""

&&&

<<<

>>>

不断开空格(non-breaking space)  

于是决定使用python的replace功能实现一个简单的转义功能函数,具体如下:

#/usr/bin/python

#coding=utf-8

def replace_html(s):

s = s.replace('"','"')

s = s.replace('&','&')

s = s.replace('<','<')

s = s.replace('>','>')

s = s.replace(' ',' ')

s = s.replace(' - 361way.com','')

print s

replace_html(title)

优点就是快速简洁,不依赖于模块,实用时也无需再reload sys模块指定默认编码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值