我想通过用一个字符替换重复的字符来规范化阿拉伯字符串。例如:单词
[JsonConverter(typeof(SettingsJsonConverter))]
public class Settings
{
[JsonIgnore]
public Dictionary<string, object> Entries { get; private set; }
public Settings()
{
this.Entries = new Dictionary<string, object>();
}
public DateTime GetDate(string key)
{
return (DateTime)this.Entries[key];
}
}
将被标准化为
رااااائع
我找到了一个适合英语(python)的正则表达式:
رائع
但是,这个正则表达式对阿拉伯字符串不起作用。我不负责任。我想知道是否有人可以帮助我并提前感谢。
答案 0 :(得分:1)
您需要将此行添加到您的代码中:
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
Out put:
رائع
答案 1 :(得分:0)
尝试以下方法:
import itertools
string = u"رااااائع"
''.join(char for char, _ in itertools.groupby(string))
我无法用阿拉伯语测试它,但它适用于普通字符串
答案 2 :(得分:0)
您正在转换无法转换为utf-8的字符。
UnicodeDecodeError:&#39; ascii&#39;编解码器不能将字节0xd8解码到位 0:序数不在范围内(128)
我建议您使用忽略或替换:
v= var.encode('utf-8', 'ignore')
或:
v= var.encode('utf-8', 'replace')
答案 3 :(得分:0)
适用于字符串的代码如下:
#!/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)
以下是我的文件示例:
كتاب مممممممممتاز جدااااااا
قصّة شيقة و راااااائعة
مذذذذذذهل