使用 python 删除阿拉伯文文本文件中的特殊字符、数字
Remove special caracters,numbers in an ARABIC text file with python
我只想保留阿拉伯字符,没有数字,我从 github 那里得到了这个正则表达式指令。
generalPath="C:/Users/Desktop/Code/dataset/"
outputPath= "C:/Users/Desktop/Code/output/"
files = os.listdir(generalPath)
for onefile in files:
# relative or absolute file path, e.g.:
localPath=generalPath+onefile
localOutputPath=outputPath+onefile
print(localPath)
print(localOutputPath)
with open(localPath, 'rb') as infile, open(localOutputPath, 'w') as outfile:
data = infile.read().decode('utf-8')
new_data = t = re.sub(r'[^0-9\u0600-\u06ff\u0750-\u077f\ufb50-\ufbc1\ufbd3-\ufd3f\ufd50-\ufd8f\ufd50-\ufd8f\ufe70-\ufefc\uFDF0-\uFDFD]+', ' ', data)
outfile.write(new_data)
在这段代码中我得到了这个错误:
追溯(最近一次通话):
文件“.\cleanText.py”,第 23 行,位于
outfile.write(new_data)
文件 "C:\ProgramData\Anaconda3\lib\encodings\cp1252.py",第 19 行,在编码中
return codecs.charmap_encode(输入,self.errors,encoding_table)[0]
UnicodeEncodeError:'charmap' 编解码器无法对位置 0-2 中的字符进行编码:字符映射到
我的阿拉伯语文字有变音符号,我想保持这样
您的程序似乎正在尝试使用 CP1252 编码而不是 UTF-8 来读取您的文本文件。在打开时指定 unicode,如下所示。此外,由于它是一个文本文件,您可以使用 'r'
而不是 'rb'
.
来阅读
with open(localPath, 'r', encoding='utf8') as infile
至于你的正则表达式,如果你只想删除数字,你可以使用
data = re.sub(r'[0-9]+', '', data)
您不需要将整个阿拉伯字母表指定为要保留的字符。但看起来你有像“(1/6)”这样的字符串。要同时删除所有括号和斜杠,请使用:
data = re.sub(r'[0-9\(\)/]+', '', data)
我只想保留阿拉伯字符,没有数字,我从 github 那里得到了这个正则表达式指令。
generalPath="C:/Users/Desktop/Code/dataset/"
outputPath= "C:/Users/Desktop/Code/output/"
files = os.listdir(generalPath)
for onefile in files:
# relative or absolute file path, e.g.:
localPath=generalPath+onefile
localOutputPath=outputPath+onefile
print(localPath)
print(localOutputPath)
with open(localPath, 'rb') as infile, open(localOutputPath, 'w') as outfile:
data = infile.read().decode('utf-8')
new_data = t = re.sub(r'[^0-9\u0600-\u06ff\u0750-\u077f\ufb50-\ufbc1\ufbd3-\ufd3f\ufd50-\ufd8f\ufd50-\ufd8f\ufe70-\ufefc\uFDF0-\uFDFD]+', ' ', data)
outfile.write(new_data)
在这段代码中我得到了这个错误: 追溯(最近一次通话): 文件“.\cleanText.py”,第 23 行,位于 outfile.write(new_data) 文件 "C:\ProgramData\Anaconda3\lib\encodings\cp1252.py",第 19 行,在编码中 return codecs.charmap_encode(输入,self.errors,encoding_table)[0] UnicodeEncodeError:'charmap' 编解码器无法对位置 0-2 中的字符进行编码:字符映射到
我的阿拉伯语文字有变音符号,我想保持这样
您的程序似乎正在尝试使用 CP1252 编码而不是 UTF-8 来读取您的文本文件。在打开时指定 unicode,如下所示。此外,由于它是一个文本文件,您可以使用 'r'
而不是 'rb'
.
with open(localPath, 'r', encoding='utf8') as infile
至于你的正则表达式,如果你只想删除数字,你可以使用
data = re.sub(r'[0-9]+', '', data)
您不需要将整个阿拉伯字母表指定为要保留的字符。但看起来你有像“(1/6)”这样的字符串。要同时删除所有括号和斜杠,请使用:
data = re.sub(r'[0-9\(\)/]+', '', data)