通过python中的正则表达式在阿拉伯语和英语单词之间添加空格

时间:2018-11-10 14:29:20

标签: python regex python-3.x

我想在文本中的阿拉伯语/波斯语和英语单词之间添加一个空格。 它应该在python中带有正则表达式。

例如:

input: "علیAli"          output: "علی Ali"
input: "علیAliرضا"       output: "علی Ali رضا" 
input: "AliعلیRezaرضا"   output: "Ali علی Reza رضا"

以及他们喜欢的东西。

2 个答案:

答案 0 :(得分:0)

您可以使用re.sub来完成此操作,就像python 3中的以下操作一样:

rx = r'[a-zA-Z]+'
output = re.sub(rx, r' \g<0> ', input)

答案 1 :(得分:0)

我认为可以通过比较unicode来代替正则表达式。我尝试编写相同的代码,但不知道如何再次拆分/ r / n以获取所需的输出。此代码可能对某些人有用。

import codecs,string
def detect_language(character):
    maxchar = max(character)
    if u'\u0041' <= maxchar <= u'\u007a':
        return 'eng'

with codecs.open('letters.txt', encoding='utf-8') as f:
    eng_list = []
    eng_var =0
    arab_list = []
    arab_var=0
    input = f.read()
    for i in input:
        isEng = detect_language(i)
        if isEng == "eng":
            eng_list.append(i)
            eng_var = eng_var + 1
        elif '\n' in i or '\r' in i:
            eng_list.append(i)
            arab_list.append(i)

        else:
            arab_list.append(i)
            arab_var =arab_var +1
temp = str(eng_list)
temp1 = temp.encode('ascii','ignore')