Как мне удалить префикс Arabi c "ال" из строки араби c? - PullRequest
1 голос
/ 15 апреля 2020

Я пробовал подобные вещи, но между входом и выходом нет изменений:

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

Ответы [ 3 ]

2 голосов
/ 15 апреля 2020

text.replace возвращает обновленную строку, но не меняет ее, вы должны изменить код на

text = text.replace(...)

Обратите внимание, что в Python строки являются «неизменяемыми»; нет способа изменить даже один символ строки; Вы можете создать только новую строку со значением, которое хотите.

1 голос
/ 15 апреля 2020

Если вы хотите удалить только prefix ال и не все комбинации ال в строке, я бы предпочел использовать:

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

Если вы просто используете text.replace('ال',''), это заменит все ال комбинации:

Пример

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

Вывод:

'استقل'
0 голосов
/ 15 апреля 2020

Я бы порекомендовал метод str.lstrip вместо того, чтобы катить свой собственный в этом случае.

пример текста (alrashid) на арабском c: 'الرَشِيد'

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

Примечание что даже если arabi c читает справа налево, lstrip удаляет начало строки (визуально справа)

также, как заметил пользователь 6502 , проблема в вашем коде заключается в том, что python строки неизменны, поэтому функция возвращала ввод обратно

...