如何用Python将UTF-8多字节Unicode字符替换为等长空格?
解决UTF-8多字节Unicode字符导致标注偏移的Python方案
核心逻辑是遍历文本中的每个字符,计算其UTF-8编码的字节长度,再用对应数量的单字节空格替换多字节字符:
def replace_multibyte_chars(text): result = [] for char in text: byte_length = len(char.encode('utf-8')) if byte_length > 1: result.append(' ' * byte_length) else: result.append(char) return ''.join(result) # 测试使用 raw_text = """Print * Share NUMBER: 0958 POLICY 1. CRITERIA FOR INITIAL APPROVAL Aetna considers gemcitabine (Gemzar) """ fixed_text = replace_multibyte_chars(raw_text) # 输出处理后的文本或写入文件 print(fixed_text)
说明
- 遍历每个字符时,通过
char.encode('utf-8')获取字符的UTF-8字节序列,len()得到字节数。 - 单字节字符(如普通空格、字母、数字)直接保留;多字节字符(如示例中的非断行空格
U+00A0,UTF-8占2字节)替换为对应数量的普通空格,保证总字节长度不变,消除标注偏移。
内容的提问来源于stack exchange,提问作者Arthur Lee
相关产品推荐
相关产品推荐

