资讯专栏INFORMATION COLUMN

用Python转换一些常见全角字符为半角

godlong_X / 764人阅读

摘要:前言最近在爬日文小说的过程中,经常遇到全角甚至和和半角混用,造成我强迫症强烈不适,就着手专门写一个脚本处理之思路首先在网上寻找看是否已经有现成库脚本能做到,寻找一番之后只找到一些思路文章,这里就不重复了有一点要注意,不少文章里是的情况,里面

前言

最近在爬日文小说的过程中,经常遇到全角(甚至和和半角混用),造成我(强迫症)强烈不适,就着手专门写一个脚本处理之

思路

首先在网上寻找看是否已经有现成库/脚本能做到,寻找一番之后只找到一些思路文章,这里就不重复了
有一点要注意,不少文章里是python2的情况,里面用的是unichr函数,到python3就变成了chr函数
直接看代码吧

def SBC2DBC(char):
    chr_code = ord(char)
    # 处理全角中数字大等于10的情况
    if chr_code in range(9312, 9332):
        return str(chr_code - 9311)
    elif chr_code in range(9332, 9352):
        return str(chr_code - 9331)
    elif chr_code in range(9352, 9372):
        return str(chr_code - 9351)
    elif chr_code in range(8544, 8556):
        return str(chr_code - 8543)

    else:
        if chr_code == 12288: # 全角空格,同0x3000
            chr_code = 32
        if chr_code == 8216 or chr_code == 8217:  # ‘’
            chr_code = 39 # "
        elif chr_code in range(65281, 65374):
            chr_code = chr_code - 65248
        return chr(chr_code)


def SBC2DBC_string(string):
    new_string = ""
    for char in string:
        new_string += SBC2DBC(char)
    return new_string

网上大部分文章里只有全角空格和range(65281,65374)的情况,我时不时能遇到一些比较奇怪的全角数字,比如⑩ ⑽ ⒑ Ⅻ,这里也一并处理了

扩展思考

1 . 某些情况下全角反而是更好的选择,比如文件名,其不能用*:/等符号,全角就更适合,当然这属于另一个话题,就不在此展开
2 . 罗马数字的情况,在现有的全角字符中罗马数字仅到12,如果某位(丧心病狂的)作者用了多个罗马数字的话,比如ⅩⅤ,上面的脚本就不合适了(就转成105),这时候需要先对整个字符串进行处理,找到连接在一起的罗马数字,然后计算并替换,这更像是数据清洗的范畴,也不展开多说了

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/44515.html

相关文章

  • 使Python转换全角字符半角

    摘要:而在使用英文输入法时我们将个英文字符所占的位置称为半角。需要注意的是只有在支持汉字等语言的计算及上才存在全角和半角的概念。由于在规定中半角字符是从开始到结束。当然除了以上的方式外还有其他的方式将全角转换为半角。 原文地址: http://52sox.com/use-python-t... 关于全角转换为半角的问题,其实源自在公司的运营人员在输入法切换的时候选择了全角,结果导致程序有时候...

    smallStone 评论0 收藏0
  • java字符全角半角转换

    摘要:序本文展示一下如何将进行半角与全角转换。术语全角进制转为进制半角进制转为进制工具类全角空格半角空格全角半角转换间隔验证输出工具类全角半角字符相互转换 序 本文展示一下如何将char进行半角与全角转换。 术语 全角 SBC case Sexagesimal to Binary Converter 60进制转为2进制 半角 DBC case Decimal to Binary Con...

    CollinPeng 评论0 收藏0
  • python IDLE的简明图示使说明(适合初学者)

    摘要:的简明图示使用说明是自带的开发工具,参见下图在的提示符后输入代码,回车,就可以执行此代码,参见下图下面演示用的编辑器编写程序文件并运行程序文件将以为扩展名。输出在屏幕上显示数据,将数据保存至文件等。 python IDLE的简明图示使用说明 IDLE 是python自带的开发工具,参见下图...

    caiyongji 评论0 收藏0
  • JS基础篇-- JS对全角半角的验证,相互转化以及介绍

    摘要:全角占两个字节。汉字字符和规定了全角的英文字符及国标中的图形符号和特殊字符都是全角字符。在全角中,字母和数字等与汉字一样占据着等宽的位置。全角转换为半角 1.什么是全角和半角? 全角:是一种电脑字符,是指一个全角字符占用两个标准字符(或两个半角字符)的位置。全角占两个字节。 汉字字符和规定了全角的英文字符及国标GB2312-80中的图形符号和特殊字符都是全角字符。在全角中,字母和数字等...

    YancyYe 评论0 收藏0
  • Python编码问题及中文解决方案

    摘要:中国人民看到这样很不错,于是就把这种汉字方案叫做。结果扩展之后的编码方案被称为标准,包括了的所有内容,同时又增加了近个新的汉字包括繁体字和符号。 声明:文章借鉴自【彻底搞懂 python 中文乱码问题】 一. 各种编码的由来 1.1 ASCII编码 很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们看到8个开关状态是好的,于是他们把这称为...

    kevin 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<