如何使用Python清除文本文件中除阿拉伯字母外的所有字符
问题原因
你当前使用的正则表达式没有正确匹配阿拉伯字母的字符范围,Python默认re模块的\w元字符仅包含英文字母、数字和下划线,不包含阿拉伯字母,因此原规则会误删阿拉伯文本。
解决方案
直接匹配阿拉伯字母的Unicode编码范围\u0600-\u06FF,仅保留该范围字符和必要的空格即可,修改后代码如下:
import re # 加载文本(用with语句更安全,会自动关闭文件) filename = '/content/drive/MyDrive/Colab Notebooks/ArabicKidsStories.txt' with open(filename, 'rt', encoding='utf-8') as file: text = file.read() # 仅保留阿拉伯字母和空白符 text = re.sub(r'[^\u0600-\u06FF\s]', '', text) # 可选:去除多余的连续空格、首尾空格,优化输出格式 text = re.sub(r'\s+', ' ', text).strip() print(text)
规则说明
正则r'[^\u0600-\u06FF\s]'中:
\u0600-\u06FF覆盖了标准阿拉伯字母的全部Unicode编码范围^放在方括号开头表示取反,即匹配所有不在上述范围、也不是空白符的字符- 所有匹配到的字符都会被替换为空,最终仅保留阿拉伯字母和空格
内容的提问来源于stack exchange,提问作者Lama S
相关产品推荐
相关产品推荐

