全角标点替换为半角标点:
def full_to_half(s: str) -> str:
"""将全角字符替换为半角字符"""
res = []
for ch in s:
if ord(ch) == 12288: # 全角空格直接转换
res.append(chr(32))
elif 65281 <= ord(ch) <= 65374: # 全角字符(除空格)根据关系转化
res.append(chr(ord(ch) - 65248))
else:
res.append(ch)
return "".join(res)
半角标点替换为全角标点:
def half_to_full(s: str) -> str:
"""将半角字符替换为全角字符"""
res = []
for ch in s:
if ord(ch) == 32: # 全角空格直接转换
res.append(chr(12288))
elif 32 <= ord(ch) <= 126: # 全角字符(除空格)根据关系转化
res.append(chr(ord(ch) + 65248))
else:
res.append(ch)
return "".join(res)
替换的符号清单:
ASCII | 全角字符 | 半角字符 |
---|---|---|
32 | (全角空格) |
(半角空格) |
33 | ! |
! |
34 | " |
" |
35 | # |
# |
36 | $ |
$ |
37 | % |
% |
38 | & |
& |
39 | ' |
' |
40 | ( |
( |
41 | ) |
) |
42 | * |
* |
43 | + |
+ |
44 | , |
, |
45 | - |
- |
46 | . |
. |
47 | / |
/ |
48 | 0 |
0 |
49 | 1 |
1 |
50 | 2 |
2 |
51 | 3 |
3 |
52 | 4 |
4 |
53 | 5 |
5 |
54 | 6 |
6 |
55 | 7 |
7 |
56 | 8 |
8 |
57 | 9 |
9 |
58 | : |
: |
59 | ; |
; |
60 | < |
< |
61 | = |
= |
62 | > |
> |
63 | ? |
? |
64 | @ |
@ |
65 | A |
A |
66 | B |
B |
67 | C |
C |
68 | D |
D |
69 | E |
E |
70 | F |
F |
71 | G |
G |
72 | H |
H |
73 | I |
I |
74 | J |
J |
75 | K |
K |
76 | L |
L |
77 | M |
M |
78 | N |
N |
79 | O |
O |
80 | P |
P |
81 | Q |
Q |
82 | R |
R |
83 | S |
S |
84 | T |
T |
85 | U |
U |
86 | V |
V |
87 | W |
W |
88 | X |
X |
89 | Y |
Y |
90 | Z |
Z |
91 | [ |
[ |
92 | \ |
\ |
93 | ] |
] |
94 | ^ |
^ |
95 | _ |
_ |
96 | ` |
` |
97 | a |
a |
98 | b |
b |
99 | c |
c |
100 | d |
d |
101 | e |
e |
102 | f |
f |
103 | g |
g |
104 | h |
h |
105 | i |
i |
106 | j |
j |
107 | k |
k |
108 | l |
l |
109 | m |
m |
110 | n |
n |
111 | o |
o |
112 | p |
p |
113 | q |
q |
114 | r |
r |
115 | s |
s |
116 | t |
t |
117 | u |
u |
118 | v |
v |
119 | w |
w |
120 | x |
x |
121 | y |
y |
122 | z |
z |
123 | { |
{
|
124 | | |
` |
125 | } |
} |
126 | ~ |
~ |