如何使用Python优雅地去除HTML中的换行回车等控制字符

前言

网页数据的预处理是非常复杂的问题,幸运的是,已经有很多开源软件能够很好地处理这些问题了,把这些工具学好用好,就可以解决工作中遇到的绝大多数问题。

1. 问题描述

最简单、最常见的问题就是如何去除HTML中的换行(\r和\n)、制表符(\t)。这个问题有很多解决方案,包括用字符串替换,正则表达式等。但有的时候,处理某些网页时,还是会出问题,导致处理后的网页出现很多图标,比如:黑色方块、菱形甚至星星。

2. 解决方案

试试用unicodedata

unicodedata提供了对Unicode字符数据库(Unicode Character Database,UCD)的访问,该数据库为所有Unicode字符定义了字符属性。

Unicode字符被划分为很多类别(Category),其中一个类别是C类别(具体信息可以查看下文),通过去掉这个类别的字符,可以把文本中一些格式字符、不可见的控制字符(如"^V, ^I" 或者zero-width的如\u200d等字符)给过滤掉,换行、制表符当然也不在话下。

# python3
import unicodedata
return "".join(ch for ch in text if unicodedata.category(ch)[0] != 'C')

3. Unicode Category相关知识

Normative Categories
Abbr.

Description

Lu	Letter, Uppercase
Ll	Letter, Lowercase
Lt	Letter, Titlecase
Mn	Mark, Non-Spacing
Mc	Mark, Spacing Combining
Me	Mark, Enclosing
Nd	Number, Decimal Digit
Nl	Number, Letter
No	Number, Other
Zs	Separator, Space
Zl	Separator, Line
Zp	Separator, Paragraph
# 下面这些就是C类别
Cc	Other, Control
Cf	Other, Format
Cs	Other, Surrogate
Co	Other, Private Use
Cn	Other, Not Assigned (no characters in the file have this property)
Informative Categories
Abbr.

Description

Lm	Letter, Modifier
Lo	Letter, Other
Pc	Punctuation, Connector
Pd	Punctuation, Dash
Ps	Punctuation, Open
Pe	Punctuation, Close
Pi	Punctuation, Initial quote (may behave like Ps or Pe depending on usage)
Pf	Punctuation, Final quote (may behave like Ps or Pe depending on usage)
Po	Punctuation, Other
Sm	Symbol, Math
Sc	Symbol, Currency
Sk	Symbol, Modifier
So	Symbol, Other
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值