字符全角转半角
Python实现
参考文档: https://blog.csdn.net/u014303349/article/details/134991383
代码:
import unicodedata
def fullwidth_to_halfwidth(s):
# 使用 unicodedata.normalize 将字符串规范化为 NFC 格式
s_normalized = unicodedata.normalize('NFC', s)
# 遍历字符串中的每个字符,将全角字符转换为半角
result = ""
for char in s_normalized:
code_point = ord(char)
# 如果是全角空格,直接替换为半角空格
if code_point == 0x3000:
result += " "
# 如果是其他全角字符,按照 Unicode 规则转换为半角字符
elif 0xFF01 <= code_point <= 0xFF5E:
result += chr(code_point - 0xfee0)
else:
result += char
return result
# 示例
fullwidth_string = "Hello World!"
halfwidth_string = fullwidth_to_halfwidth(fullwidth_string)
print(halfwidth_string)
使用
日文的全角字符转半角:
s1="[アニメ BD] 探偵オペラミルキィホームズ 第2幕(第2期) 第05話「コソコソと支度」"
s2="[アニメ BD] 探偵オペラミルキィホームズ 第2幕(第2期) 第05話「コソコソと支度」"
print(s1==s2)
import unicodedata
def fullwidth_to_halfwidth(s):
# 使用 unicodedata.normalize 将字符串规范化为 NFC 格式
s_normalized = unicodedata.normalize('NFC', s)
# 遍历字符串中的每个字符,将全角字符转换为半角
result = ""
for char in s_normalized:
code_point = ord(char)
# 如果是全角空格,直接替换为半角空格
if code_point == 0x3000:
result += " "
# 如果是其他全角字符,按照 Unicode 规则转换为半角字符
elif 0xFF01 <= code_point <= 0xFF5E:
result += chr(code_point - 0xfee0)
else:
result += char
return result
# 示例
s1 = fullwidth_to_halfwidth(s1)
print(s1)
s2 = fullwidth_to_halfwidth(s2)
print(s2)
print(s1 == s2)
输出:
False
[アニメ BD] 探偵オペラミルキィホームズ 第2幕(第2期) 第05話「コソコソと支度」
[アニメ BD] 探偵オペラミルキィホームズ 第2幕(第2期) 第05話「コソコソと支度」
True