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 | 文字表现形式区 | 收容组合拉丁文字、希伯来文、阿拉伯文、中日韩直式标点、小符号、半角符号、全角符号等。 |