网页和自然语言处理中的字符问题(半角和全角)

  先来看一个截图,爬虫得到的结果,里面99的字体貌似有点奇怪,刚开始以为是不同的字体,在Excel里选中调整字体时发现没有变化,后来经过大佬指点,才知道是全角数字(原谅我小白无知)。为了统一起见,把所有的全角字符转换为半角字符,然后再做处理。既然是在爬虫里面,那可以直接用代码转换了,但是以前存起来的数据用代码转就有点繁琐了,所以在Excel里解决就好。下面介绍两种方法,分别用Python和Excel。

                                

  首先介绍一下什么是全角和半角:全角字符unicode编码从65281~65374 (十六进制 0xFF01 ~ 0xFF5E),半角字符unicode编码从33~126 (十六进制 0x21~ 0x7E),空格比较特殊,全角为 12288(0x3000),半角为 32(0x20)。除空格外,全角/半角按unicode编码排序在顺序上是对应的(半角 + 65248 = 全角)。那代码就好写了。

1. Python全角转半角

  

   1 def DBC2SBC(ustring):
   2     n = []
   3     # python3现在已经将unichr和chr合并,所以网上的代码已经不合适
   4     for char in ustring:
   5         num = ord(char)
   6         if num == 0x3000:
   7             num = 32
   8         elif 0xFF01 <= num <= 0xFF5E:
   9             num -= 0xfee0
  10         num = chr(num)
  11         n.append(num)
  12     return ''.join(n)
  13 
  14 if __name__ == '__main__':
  15     a = '《中文》(213)'
  16     print(a)
  17     print(DBC2SBC(a))

                                   

  由于所有中文占两个字节,只能由全角表示,所以没有变化,里面的全角数字变为半角数字,但是中文括号也跟着变化了。要是想保留文本中的中文括号那就像空格一样单独处理,中文符号和英文符号的对应关系查不到的话没关系,把所有的对应关系打印出来看就是。

  1 for i in range(33,127):
  2     print(i,chr(i),i+65248,chr(i+65248))

2. 在Excel里转换全角数字和半角数字

  在想要转化的一个单元格后面输入=ASC()就可转化一个单元格,然后点住黑色十字指针往下拉就可以将一列全部转化。图中的D8是想要转化的那一个单元格编号。

                                 

  最后说一句,win10默认的拼音输入法没有开启全角输入方式,所以先要去输入法设置里改一下。

                            

 

转载于:https://www.cnblogs.com/baijing1/p/9858668.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值