首页 > 编程 > Python > 正文

Python实现全角半角字符互转的方法

2020-02-23 04:08:49
字体:
来源:转载
供稿:网友

前言

相信对于每一个编程人员来说,在文本处理的时候,经常会遇到全角半角不一致的问题。于是需要程序能够快速的在两者之间互转。由于全角半角本身存在着映射关系,所以处理起来并不复杂。

具体规则为:

      全角字符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数值。

先来打印下映射关系:

for i in xrange(33,127): print i,chr(i),i+65248,unichr(i+65248)

返回结果

33 ! 65281 !34 " 65282 "35 # 65283 #36 $ 65284 $37 % 65285 %38 & 65286 &39 ' 65287 '40 ( 65288 (41 ) 65289 )42 * 65290 *43 + 65291 +44 , 65292 ,45 - 65293 -46 . 65294 .47 / 65295 /48 0 65296 049 1 65297 150 2 65298 251 3 65299 352 4 65300 453 5 65301 554 6 65302 655 7 65303 756 8 65304 857 9 65305 958 : 65306 :59 ; 65307 ;60 < 65308 <61 = 65309 =62 > 65310 >63 ? 65311 ?64 @ 65312 @65 A 65313 A66 B 65314 B67 C 65315 C68 D 65316 D69 E 65317 E70 F 65318 F71 G 65319 G72 H 65320 H73 I 65321 I74 J 65322 J75 K 65323 K76 L 65324 L77 M 65325 M78 N 65326 N79 O 65327 O80 P 65328 P81 Q 65329 Q82 R 65330 R83 S 65331 S84 T 65332 T85 U 65333 U86 V 65334 V87 W 65335 W88 X 65336 X89 Y 65337 Y90 Z 65338 Z91 [ 65339 [92 / 65340 \93 ] 65341 ]94 ^ 65342 ^95 _ 65343 _96 ` 65344 `97 a 65345 a98 b 65346 b99 c 65347 c100 d 65348 d101 e 65349 e102 f 65350 f103 g 65351 g104 h 65352 h105 i 65353 i106 j 65354 j107 k 65355 k108 l 65356 l109 m 65357 m110 n 65358 n111 o 65359 o112 p 65360 p113 q 65361 q114 r 65362 r115 s 65363 s116 t 65364 t117 u 65365 u118 v 65366 v119 w 65367 w120 x 65368 x121 y 65369 y122 z 65370 z123 { 65371 {124 | 65372 |125 } 65373 }126 ~ 65374 ~            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表