清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>
下面这个小工具包含了 判断unicode是否是汉字,数字,英文,或者其他字符。 全角符号转半角符号。 unicode字符串归一化等工作。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 | #!/usr/bin/env python # -*- coding:GBK -*- """汉字处理的工具: 判断unicode是否是汉字,数字,英文,或者其他字符。 全角符号转半角符号。""" def is_chinese(uchar): """判断一个unicode是否是汉字""" if uchar > = u 'u4e00' and uchar< = u 'u9fa5' : return True else : return False def is_number(uchar): """判断一个unicode是否是数字""" if uchar > = u 'u0030' and uchar< = u 'u0039' : return True else : return False def is_alphabet(uchar): """判断一个unicode是否是英文字母""" if (uchar > = u 'u0041' and uchar< = u 'u005a' ) or (uchar > = u 'u0061' and uchar< = u 'u007a' ): return True else : return False def is_other(uchar): """判断是否非汉字,数字和英文字符""" if not (is_chinese(uchar) or is_number(uchar) or is_alphabet(uchar)): return True else : return False def B2Q(uchar): """半角转全角""" inside_code = ord(uchar) if inside_code< 0x0020 or inside_code> 0x7e : #不是半角字符就返回原来的字符 return uchar if inside_code = = 0x0020 : #除了空格其他的全角半角的公式为:半角=全角-0xfee0 inside_code = 0x3000 else : inside_code + = 0xfee0 return unichr(inside_code) def Q2B(uchar): """全角转半角""" inside_code = ord(uchar) if inside_code = = 0x3000 : inside_code = 0x0020 else : inside_code - = 0xfee0 if inside_code< 0x0020 or inside_code> 0x7e : #转完之后不是半角字符返回原来的字符 return uchar return unichr(inside_code) def stringQ2B(ustring): """把字符串全角转半角""" return "".join([Q2B(uchar) for uchar in ustring]) def uniform(ustring): """格式化字符串,完成全角转半角,大写转小写的工作""" return stringQ2B(ustring).lower() def string2List(ustring): """将ustring按照中文,字母,数字分开""" retList = [] utmp = [] for uchar in ustring: if is_other(uchar): if len(utmp) = = 0 : continue else : retList.append("".join(utmp)) utmp = [] else : utmp.append(uchar) if len(utmp)! = 0 : retList.append("".join(utmp)) return retList if __name__ = = "__main__" : #test Q2B and B2Q for i in range( 0x0020 , 0x007F ): print Q2B(B2Q(unichr(i))),B2Q(unichr(i)) #test uniform ustring = u '中国 人名a高频A' ustring = uniform(ustring) ret = string2List(ustring) print ret |