给定一个以 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/