1

我有一个超过 10000 个单词的乌尔都语语料库。现在我想要的是清理我的数据。每当我使用正则表达式时,我的文本中都会出现一个特殊的 uni 编码数据,例如“!؟ـ،”,它会给我错误,即您的数据不是编码形式。请为我提供一些帮助以清理我的数据。谢谢

这是我的示例数据:

八点

回复

关注

胡歌

带走

翻译

?

دائیں

亚维

بائیں

والوں

آسمانوں

关注

پہنچایا

،ہوا

888

دائیں؟

والے

4

1 回答 1

3

我用你的样本找到了所有带有ہ或的单词ر

请注意,我必须通过在正则表达式字符串和数据字符串前面使用 u 来告诉 python 我正在处理 utf-8 数据

import re
data = u"""
ظہیر

احمد

ماہرہ

خان

.....
"""
result = re.findall(u'[^\s\n]+[ہر][^\s\n]+',data,re.MULTILINE)
print(result)

输出是

['ظہیر', 'ماہرہ', 'تصاویر،', 'پہنچایا', '،ہوا']

另一个例子,删除除空格之外的所有字母,并确保只有一个空格分隔单词

result = re.sub(' +',' ',re.sub(u'[\W\s]',' ',data))
print(result)

输出是

 ظہیر احمد ماہرہ خان کی تصاویر نے دائیں اور بائیں والوں کو آسمانوں پر پہنچایا ہوا ہے دائیں والے 

你也可以使用单词tokanizer,

import nltk
result = nltk.tokenize.wordpunct_tokenize(data)
print(result)

输出将是

['ظہیر', 'احمد', 'ماہرہ'
 , 'خان', 'کی', '،', 'تصاویر'
 , '،', 'نے', 'دائیں', 'اور', 'بائیں', 'والوں'
 , 'کو', 'آسمانوں', 'پر', 'پہنچایا'
 , '،', 'ہوا', 'ہے', '۔', 'دائیں', '؟', 'والے']

编辑 ... 对于 Python 2.7,您必须在代码文件的开头指定编码,并告诉re正则表达式是 'unicode' 使用re.UNICODE

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import re

data = u"""ظہیر

احمد

ماہرہ

خان

کی،

.....

"""


result = re.sub(ur'\s+',u' ',re.sub(ur'[\W\s]',ur' ',data,re.UNICODE),re.UNICODE)
print(result)

还要注意使用ur''来指定字符串是 unicode 正则表达式字符串

于 2017-10-14T10:07:28.983 回答