我想在我的文本中在阿拉伯语/波斯语和英语单词之间添加一个空格。它应该是python中的正则表达式。
例如:
input: "علیAli" output: "علی Ali"
input: "علیAliرضا" output: "علی Ali رضا"
input: "AliعلیRezaرضا" output: "Ali علی Reza رضا"以及任何像他们这样的人。
发布于 2018-11-10 23:19:06
你可以像在Python3中那样使用re.sub来做这件事:
rx = r'[a-zA-Z]+'
output = re.sub(rx, r' \g<0> ', input)发布于 2018-11-11 01:23:46
我认为这可以通过比较unicodes来实现,而不是正则表达式。我尝试编写相同的代码,但不知道如何再次拆分/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')https://stackoverflow.com/questions/53239934
复制相似问题