解析波斯语中由一半 space (\u200c) 连接的两个单词

Parse two words in Persian which are concatenated by half space (\u200c)

我正在处理波斯语诗歌(语言字母与阿拉伯语几乎相同)。对于我文件中的每一行诗,我想解析它的单词并将它们作为整体单词保存在另一个列表中。问题是有些单词被 space 分隔,我可以用 split() 轻松处理,但很少有被半 space 或 - \u200c.[= 分隔的25=]

例如,这是波斯语的字符串:

s = "سنگی‌تری"

第一个字是"سنگی",第二个字是"تری"。我想把它们分开,但我的问题是我不知道如何,如果我使用 s.split(),我会得到 ['سنگی\u200cتری'],这是一个词,也有 \u200c,这不应该。 (s 中的两个单词被 \u200c 而不是 space 分隔,这就是问题所在。

我还要重复一下,我也需要解析由 space 分隔的单词。所以如果是s = "سنگی ‌تری"(这次用space隔开),我也需要处理一下,解析成"سنگی""تری"。正如我所说,后者可以通过 split() 方法实现。

简单的解决方案:

s.replace("\u200c", " ").split()

如果您需要拆分的边界列表更长或更复杂,那么我建议使用 re.split

您可以使用 re.split:

>>> re.split(" |\u200c", "سنگیتری")
['سنگی', 'تری']

或使用split两次:

>>> [x for full in "سنگیتری".split() for x in full.split("\u200c")]
['سنگی', 'تری']

不过我觉得我更喜欢