使用Python对全角字符半角字符互转

10 sec read

在文本处理的时候,经常会遇到全角半角不一致的问题。于是需要程序能够快速的在两者之间互转。由于全角半角本身存在着映射关系,所以处理起来并不复杂。具体规则为:

  • 全角字符unicode编码从65281~65374 (十六进制 0xFF01 ~ 0xFF5E)
  • 半角字符unicode编码从33~126 (十六进制 0x21~ 0x7E)
  • 空格比较特殊,全角为 12288(0x3000),半角为 32(0x20)
  • 而且除空格外,全角/半角按unicode编码排序在顺序上是对应的(半角 + 65248 = 全角)

所以可以直接通过用+-法来处理非空格数据,对空格单独处理。

用到的一些函数

  • chr()函数用一个范围在range(256)内的(就是0~255)整数作参数,返回一个对应的字符。
  • unichr()跟它一样,只不过返回的是Unicode字符。
  • ord()函数是chr()函数或unichr()函数的配对函数,它以一个字符(长度为1的字符串)作为参数,返回对应的ASCII数值,或者Unicode数值。

先来打印下映射关系:

返回结果

把全角转成半角:

把半角转成全角:

上面的实现方式非常的简单,但是现实情况下可能并不会把所以的字符统一进行转换,比如中文文章中我们期望将所有出现的字母和数字全部转化成半角,而常见标点符号统一使用全角,上面的转化就不适合了。解决方案,是自定义词典。

特别注意:引号在英语体系中引号是不区分前引号和后引号。

打赏作者
微信支付标点符 wechat qrcode
支付宝标点符 alipay qrcode

使用Python更换外网IP

在进行数据抓取时,经常会遇到IP被限制的情况,常见的解决方案是搭建代理IP池,或购买IP代理的服务。除此之外,还有一个另外的方法就是使用家里的宽带网络进行抓取。由于家里的宽带每次断开重新连接时都会分配一个新的IP,所以在我们抓取数据的时候,判断 ...
36 sec read

Python多线程与多进程

7 min read

Python Requests 抓取失败时的重试设置

最近在抓取数据的时候,经常遇到连接超时的问题,分析原因居然是DNS污染导致的,为了让程序更加稳健,需要对requests请求实现失败重试的逻辑。
2 min read

Leave a Reply

Your email address will not be published. Required fields are marked *