我想通过用一个字符替换重复的字符来规格化阿拉伯文字符串。例如:单词如何处理阿拉伯文中的重复字母
رااااائع
将被标准化为
رائع
我找到了适合英语(Python)的正则表达式:
s="I loooooooooooooooooove you"
s = re.sub(r'(.)\1+', r'\1', s) // s= "I love you"
但是,这个正则表达式不起作用阿拉伯文字符串。我不认识这个事业。我想知道是否有人可以帮助我,并提前感谢。
我想通过用一个字符替换重复的字符来规格化阿拉伯文字符串。例如:单词如何处理阿拉伯文中的重复字母
رااااائع
将被标准化为
رائع
我找到了适合英语(Python)的正则表达式:
s="I loooooooooooooooooove you"
s = re.sub(r'(.)\1+', r'\1', s) // s= "I love you"
但是,这个正则表达式不起作用阿拉伯文字符串。我不认识这个事业。我想知道是否有人可以帮助我,并提前感谢。
尝试以下操作:
import itertools
string = u"رااااائع"
''.join(char for char, _ in itertools.groupby(string))
我无法用阿拉伯语测试,但它与普通字符串
工作要转换无法转换为字符UTF-8。
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd8 in position 0: ordinal not in range(128)
我建议你使用忽略或更换:
v= var.encode('utf-8', 'ignore')
或:
v= var.encode('utf-8', 'replace')
您需要将此行添加到您的代码: from __future__ import unicode_literals
# encoding: utf-8
from __future__ import unicode_literals
import re
s="رااااائع"
s = re.sub(r'(.)\1+', r'\1', s)
print s
输出地说:
رائع
,对于字符串工作的代码如下:
#!/usr/bin/python
# -*-coding:utf-8 -*
import re, string,sys
import itertools
my_file = open("./out.txt", "w")
ch= u"كتاب راااااائع جداااا"
s ="".join(c for c, _ in itertools.groupby(ch))
a=s.encode('utf-8')
my_file.write(a +"\n") // le fichier contient "كتاب رائع جدا"
当我想在一个文件中的每一行做归一化,我用的是以下代码:
#!/usr/bin/python
# -*-coding:utf-8 -*
import re, string,sys
import itertools
mon_fichier = open("./file.txt", "r")
my_file = open("./file_norm.txt", "w")
contenu = mon_fichier.read()
liste = contenu.split('\n')
for var in liste:
v= var.encode('utf-8')
s ="".join(c for c, _ in itertools.groupby(v))
b= s.encode('utf-8')
my_file.write(b +"\n")
我有以下错误:
v = var.encode('utf-8')
UnicodeDecodeError: 'ascii' codec can't decode byte 0xef in position 0: ordinal not in range(128)
这里是我的文件的样本:
كتاب مممممممممتاز جدااااااا
قصّة شيقة و راااااائعة
مذذذذذذهل
的代码不能正常工作。字符串“رااااائع”保持原样 – amibar
编辑:再试 –
打印给我رائع –