python - 如何删除大型法语文本文件中的所有特殊字符

标签 python regex bash unicode data-cleaning

给定一个以 UTF-8 编码并由 unicode NFC 标准化的法语大文本文件(>200GB),我想使用以下命令删除除重音/非重音字母、数字和标点符号之外的所有特殊字符Python 或 Bash 或任何更快的方法。以前,我通过扫描文本来手动执行此任务,以确定是否有任何我不想要的特殊字符,并使用如下字符代码删除它们:

def remove_special_chars(text):

    text = re.sub(chr(65533), '', text)
    text = re.sub(chr(9658), '', text) 
    text = re.sub(chr(9660), '', text)
    text = re.sub(chr(169), '', text)  

    return text

� (char code 65533) ► (char code 9658) ▼ (char code 9660) © (char code 169) etc.

但是,对于大型文本文件,不可能再这样做了。因此,我正在考虑通过检查字符是否是(重音/非重音)字母、数字或标点符号来删除所有特殊字符,如果不是则删除。我尝试了以下操作,但命令行不执行。

grep -P -v '[^a-zA-Z0-9 àâäèéêëîïôœùûüÿçÀÂÄÈÉÊËÎÏÔŒÙÛÜŸÇ!"#\$%&\'\(\)\*\+,\\-\./:;<=>\?@\[\]\^_`\{\|\}\~]' file

你能帮我解决这个问题吗?预先感谢您的帮助!

最佳答案

全部the chars you want to remove属于Symbols, Other Unicode category .

在Python中,您可以安装PyPi regex module ,添加

import regex

然后像这样更改内容:

text = regex.sub(r'\p{So}+', '', text)

在 Linux 中,您可以使用 Perl 单行代码来做到这一点:

perl -i -CSD -Mutf8 -pe 's/\p{So}+//g' file

-i 选项将修改内联文件,-CSD -Mutf8 存在,因为我相信您的文件采用 UTF8 编码。

关于python - 如何删除大型法语文本文件中的所有特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57552967/

相关文章:

java - 如何在 Struts 2 中仅获取特定字段作为响应

regex - sed 命令行 将 "aas=aas"更改为 "aas = aas"

python - 如何在此脚本中找到查找结果以通过电子邮件发送

linux - Bash 脚本为两个但相反的字符串测试返回 true

linux - 如何计算任何文件中第二列的空格

python - TensorFlow 2.0 : Eager execution of training either returns bad results or doesn't learn at all

java - 从 python 到 java 的管道输入

python - cv2.contourArea 无法正常工作

javascript:使用正则表达式匹配并替换文本区域中的非标记 URL

python - 如何在 np.where() 中检查数据框中列表中的空元素?