You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python处理法语拉丁字符失效:非ASCII字符被替换为空格

问题原因及解决方法

你的代码里处理拉丁字符的分支没触发,核心问题是打开文件时没指定编码,导致法语特有的拉丁字符被错误解析,它们的ord()值根本不在224-254这个区间里,自然走不到对应的分支。

另外,用ord()判断字符范围的方式太局限,只覆盖了ASCII和部分拉丁字符,对Unicode支持不好,不如直接用Python字符串的isalpha()方法,它能识别所有Unicode字母(包括法语的é、ç、ù等)。

修改后的代码

def convert():
    for filename in files_names:
        # 打开文件时指定utf-8编码,确保字符正确读取
        with open(f"speeches/{filename}", "r", encoding="utf-8") as f1:
            cleaned_text = " "
            for line in f1:
                for char in line:
                    if char.isalpha():
                        # 统一转成小写
                        cleaned_text += char.lower()
                    else:
                        # 非字母字符替换为空格,避免连续空格
                        if cleaned_text[-1] != " ":
                            cleaned_text += " "
        # 写入文件同样指定utf-8编码
        with open(f"./cleaned/{filename}", "w", encoding="utf-8") as f2:
            f2.write(cleaned_text[1:])

关键修改点

  • 用with语句管理文件,自动关闭,避免手动close的疏漏
  • 打开文件时明确指定encoding="utf-8",保证法语字符正确读取
  • 用char.isalpha()替代ord()判断,兼容所有Unicode字母(包括法语特殊字符)
  • 统一用lower()转小写,简化原有的大小写判断逻辑

这样修改后,é、ç、ù这些字符会被正确保留,不会被替换成空格了。

内容的提问来源于stack exchange,提问作者The Geniot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 04:45:57