如何从阿拉伯字符串中删除阿拉伯语前缀“ال”?

时间:2020-04-15 05:48:32

标签: python arabic

我已经尝试过类似的事情,但是输入和输出之间没有变化:

def remove_al(text):
    if text.startswith('ال'):
        text.replace('ال','')
    return text

4 个答案:

答案 0 :(得分:2)

text.replace返回更新的字符串,但不更改它,您应该将代码更改为

text = text.replace(...)

请注意,在Python中,字符串是“不可变的”;即使字符串中的单个字符也无法更改;您只能使用所需的值创建一个新字符串。

答案 1 :(得分:1)

如果您只想删除字符串中的prefix ال而不是全部ال组合,我建议使用:

def remove_prefix_al(text):
    if text.startswith('ال'):
        return text[2:]
    return text

如果您仅使用text.replace('ال',''),它将替换所有ال组合:

示例

text = 'الاستقلال'
text.replace('ال','')

输出:

'استقل'

答案 2 :(得分:0)

在这种情况下,我建议使用方法str.lstrip,而不要自己动手。

阿拉伯语示例文字(alrashid):'الرَشِيد'

text = 'الرَشِيد'
clean_text  = text.lstrip('ال')
print(clean_text)

请注意,即使阿拉伯语从右到左读取,lstrip也会剥去字符串的开头(在视觉上位于右边)

另外,正如用户6502所指出的那样,您的代码中的问题是因为python字符串是不可变的,因此该函数将输入返回了

答案 3 :(得分:0)

“ال”作为前缀在阿拉伯语中非常复杂,您将需要Regex才能将其与主干和其他前缀准确分开。以下代码将帮助您将“ال”与大多数单词分开:

import re

text = 'والشعر كالليل أسود'

words = text.split()

for word in words:
    alx = re.search(r'''^
                            ([وف])?
                            ([بك])?
                            (لل)?
                            (ال)?
                            (.*)$''', word, re.X)
    groups = [alx.group(1), alx.group(2), alx.group(3), alx.group(4), alx.group(5)]
    groups = [x for x in groups if x]
    print (word, groups)

运行(在Jupyter中)您将获得:

Mongoose and multiple database in single node.js project

相关问题