python 半角全角的相互转换
🕦 by pyList at 2013-09-28 10:52
全角与半角在中文输入法里经常要接触到,后台在处理用户输入数据时需要对半角全角的相互转换。下面是python 实现的半角全角的相互转换功能。
全角与半角
- 全角指一个字符占用两个标准字符位置的状态。
- 半角即一个字符占用一个标准字符的位置。
全角占两个字节,半角占一个字节。半角全角主要是针对标点符号来说的,全角标点占两个字节,半角占一个字节,而不管是半角还是全角,汉字都还是要占两个字节。
半角全角的转换
python code: 半角全角的转换
# -*- coding: utf-8 -*-
def strQ2B(ustring):
"""把字符串全角转半角"""
rstring = ""
for uchar in ustring:
inside_code=ord(uchar)
if inside_code==0x3000:
inside_code=0x0020
else:
inside_code-=0xfee0
if inside_code0x7e: #转完之后不是半角字符则返回原来的字符
rstring += uchar
rstring += unichr(inside_code)
return rstring
def strB2Q(ustring):
"""把字符串半角转全角"""
rstring = ""
for uchar in ustring:
inside_code=ord(uchar)
if inside_code0x7e: #不是半角字符则返回原来的字符
rstring += uchar
if inside_code==0x0020: #除了空格其他的全角半角的公式为:半角=全角-0xfee0
inside_code=0x3000
else:
inside_code+=0xfee0
rstring += unichr(inside_code)
return rstring
def b2q(ustr):
return ''.join(unichr(0x3000 if c == 0x0020 else c+0xfee0 if 0x0020 < c < 0x0080 else c) for c in map(ord, ustr))
def q2b(ustr):
return ''.join(unichr(0x0020 if c == 0x3000 else c-0xfee0 if 0xff00 < c < 0xff80 else c) for c in map(ord, ustr))
print strB2Q('aoe')
print b2q('aoe')
上面函数统一格式化用户输入很有帮助。
本文网址: https://pylist.com/t/1380336767 (转载注明出处)
如果你有任何建议或疑问可以在下面 留言
发表第一条评论!
相关推荐
小工具
标签
python
html
中文
实体
转换
格式
常见
时间
json
unicode
性能
小试
japronto
web
最快
linux
engine
app
google
ssdb
缓存
分享
一个
sqlite3
连接池
xmltodict
gbk
xml
编码
苦短
城铁
guido
我用
轻量级
sae
博客
一款
低功耗
爬虫
服务器
组装
身份验证
authenticator
迁移
手机
bbr
openwrt
路由
开启
遍历
数据库
方法
nginx
golang
quic
抢先
国内
pkcs7
js
crypto
aes
ecb
caddy
https
部署
网站
多个
硬件加速
ubnt
er
固件
mac
store
登录
未知
bottle
uwsgi
搭建
环境
搜索引擎
网址
提交
主动
经验
api
自动
字符串
分割
英文
usb
上网卡
共享
网络
自动更新
microsoft
关闭
静音
风扇
主机
笔记本
改造
微信
尝鲜
视频
体验
cpu
debian
ubuntu
查看
温度
chrome
server
浏览
webdriver
微博
selenium
gnu
安装
系统启动
编译
宅家
坑记
屏幕
动手
useragent
蜘蛛
真假
识别
最近发表
- Mac 关闭 Microsoft 自动更新
- Mac 登录 App Store 出现“发生了未知错误”的解决方法
- 老笔记本改造为无风扇静音主机方案
- 自己组装21瓦低功耗家庭爬虫、文件、web服务器
- 微信视频号尝鲜体验
- Ubuntu/Debian 查看CPU温度的方法
- 在Ubuntu/debian Server 系统使用Chrome 无头浏览模式
- 换手机后 Google 身份验证器 Google Authenticator 数据迁移的简单方法
- 使用Golang selenium WebDriver 自动登录微博
- 在 Ubuntu 或其它 GNU/Linux 系统下安装 Debian
- Mac 下制作 USB ubuntu/debian 系统启动、安装盘的几种方法
- ubuntu/debian 下自行编译 OpenWRT 固件
- 宅家自己动手换手机屏幕掉坑记
- 路由 UBNT ER-X 官方固件升级及开启硬件加速的方法
- 在 Nginx 和 Golang web 上抢先体验 QUIC
- 从UserAgent识别搜索引擎并判断真假蜘蛛
最近浏览
- 自己组装21瓦低功耗家庭爬虫、文件、web服务器
- 换手机后 Google 身份验证器 Google Authenticator 数据迁移的简单方法
- Openwrt 路由上开启BBR
- python SQLite3 连接池
- SSDB 数据库遍历的方法
- 在 Nginx 和 Golang web 上抢先体验 QUIC
- OpenWrt 国内源
- python & js Crypto AES ECB Pkcs7 加密解密实现
- 使用caddy 快速部署多个https 网站
- 路由 UBNT ER-X 官方固件升级及开启硬件加速的方法
- Mac 登录 App Store 出现“发生了未知错误”的解决方法
- Bottle + UWSGI + Nginx 环境搭建过程
- 向各搜索引擎主动提交网址的经验
- 利用 API 自动向搜索引擎提交网址
- python 分割中文英文混合字符串的正确方法
- Openwrt 使用USB 4G 上网卡共享网络