我有一个超过 10000 个单词的乌尔都语语料库。现在我想要的是清理我的数据。每当我使用正则表达式时,我的文本中都会出现一个特殊的 uni 编码数据,例如“!؟ـ،”,它会给我错误,即您的数据不是编码形式。请为我提供一些帮助以清理我的数据。谢谢
这是我的示例数据:
八点
回复
关注
胡歌
带走
翻译
?
دائیں
亚维
بائیں
والوں
还
آسمانوں
关注
پہنچایا
،ہوا
888
دائیں؟
والے
我有一个超过 10000 个单词的乌尔都语语料库。现在我想要的是清理我的数据。每当我使用正则表达式时,我的文本中都会出现一个特殊的 uni 编码数据,例如“!؟ـ،”,它会给我错误,即您的数据不是编码形式。请为我提供一些帮助以清理我的数据。谢谢
这是我的示例数据:
八点
回复
关注
胡歌
带走
翻译
?
دائیں
亚维
بائیں
والوں
还
آسمانوں
关注
پہنچایا
،ہوا
888
دائیں؟
والے
我用你的样本找到了所有带有ہ
或的单词ر
请注意,我必须通过在正则表达式字符串和数据字符串前面使用 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 正则表达式字符串