解析波斯语中由一半 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")]
['سنگی', 'تری']
不过我觉得我更喜欢。
我正在处理波斯语诗歌(语言字母与阿拉伯语几乎相同)。对于我文件中的每一行诗,我想解析它的单词并将它们作为整体单词保存在另一个列表中。问题是有些单词被 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")]
['سنگی', 'تری']
不过我觉得我更喜欢