我想通過用一個字符替換重複的字符來規格化阿拉伯文字符串。例如:單詞如何處理阿拉伯文中的重複字母
رااااائع
將被標準化爲
رائع
我找到了適合英語(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
編輯:再試 –
打印給我رائع –