我已经尝试过类似的事情,但是输入和输出之间没有变化:
def remove_al(text):
if text.startswith('ال'):
text.replace('ال','')
return text
答案 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中)您将获得: