unicode常用范围
爬虫从网站上爬取的内容在读写操作时经常会报以下错误:
UnicodeEncodeError: 'gbk' codec can't encode character '00b' in position 7: illegal multibyte sequence
所以需要我们对数据Unicode进行清洗,排除文章内异常的Unicode符号。
清洗思路
我的思路是用正则表达式来匹配常用字,不在范围内的Unicode编码则去除。
.compile(u"[^常用字范围]+")匹配到非范围内字符后,
.sub()方法将特殊字符替换成空
1 |
|
Unicode范围
常用范围
名称 | 范围 |
---|---|
中文 | \u4e00-\u9fa5 |
日文平假名 | \u3040-\u309f |
日文片假名 | \u30a0-\u30ff |
韩文 | \uac00-\ud7ff |
英文字母 | \u0041-\u005A,\u0061,\u007A |
数字 | u0030-u0039 |
英文标点 | !@#$%^&()-=[]{}\;':",./<>?/+ |
中文标点 | 使用下面的中文标点挨个匹配 |
注:网上有种方法写的中文标点匹配是 000-03f-,但01c,仍然会报错,建议将中文标点挨个匹配
中文标点对应
名称 | Unicode | 符号 |
---|---|---|
句号 | \u3002 | 。 |
问号 | \uFF1F | ? |
叹号 | \uFF01 | ! |
逗号 | \uFF0C | , |
顿号 | \u3001 | 、 |
分号 | \uFF1B | ; |
冒号 | \uFF1A | : |
引号 | \u300C | 「 |
\u300D | 」 | |
\u300E | 『 | |
\u300F | 』 | |
\u2018 | ‘ | |
\u2019 | ’ | |
\u201C | “ | |
\u201D | ” | |
括号 | \uFF08 | ( |
\uFF09 | ) | |
\u3014 | 〔 | |
\u3015 | 〕 | |
\u3010 | 【 | |
\u3011 | 】 | |
破折号 | \u2014 | —— |
省略号 | \u2026 | …… |
连接号 | \u2013 | – |
间隔号 | \uFF0E | . |
书名号 | \u300A | 《 |
\u300B | 》 | |
\u3008 | 〈 | |
\u3009 | 〉 |
非英文语系字符范围
范围 | 编码 | 说明 |
---|---|---|
2E80~33FFh | 中日韩符号区 | 收容康熙字典部首、中日韩辅助部首、注音符号、日本假名、韩文音符,中日韩的符号、标点、带圈或带括符文数字、月份,以及日本的假名组合、单位、年号、月份、日期、时间等。 |
3400~4DFFh | 中日韩认同文字扩充A区 | 中日韩认同表意文字扩充A区,总计收容6,582个中日韩汉字。 |
4E00~9FFFh | 中日韩认同表意文字区 | 中日韩认同表意文字区,总计收容20,902个中日韩汉字。 |
A000~A4FFh | 彝族文字区 | 收容中国南方彝族文字和字根 |
AC00~D7FFh | 韩文拼音组合字区 | 收容以韩文音符拼成的文字 |
F900~FAFFh | 中日韩兼容表意文字区 | 总计收容302个中日韩汉字 |
FB00~FFFDh | 文字表现形式区 | 收容组合拉丁文字、希伯来文、阿拉伯文、中日韩直式标点、小符号、半角符号、全角符号等。 |