如何在python中分隔混合词(波斯语和英语)

时间:2019-02-07 20:00:14

标签: python nlp

嗨,我有一个字符串数据集,有些字符串包含如下混合词:

    سلام12World
    دوربینdigital
    سال2012good

... 而我想要的输出是:

   12 سلام world
   دوربین digital
   2012 سال good

这是我的代码:

 def spliteKeyWord(str):
     regex = r"[\u200b-\u200c]|[0-9]+|[a-zA-Z]+\'*[a-z]*"
     matches = re.findall(regex, str, re.UNICODE)
     return matches

但是此代码未显示我想要的输出。是否有可能获得类似的输出?

2 个答案:

答案 0 :(得分:0)

您可以将re.findall与交替模式一起使用:

def spliteKeyWord(s):
    return re.findall(r'[\dA-Za-z]+|[^\dA-Za-z\W]+', s, re.UNICODE)

答案 1 :(得分:0)

参考this question,您可以使用此正则表达式解析非ASCII字符:

words = ['12سلامWorld','دوربینdigital','2012سالgood']

for w in words:
    re.split(r'([^\x00-\x7F]+)', w)


# ['12', 'سلام', 'World']
# ['', 'دوربین', 'digital']
# ['2012', 'سال', 'good']

这会将所有非ASCII单词分开。