Python将字符串分割为相同语言字符的子串

3 投票
1 回答
2692 浏览
提问于 2025-04-18 16:12

我想把像 "hiسلامaliعلی" 这样的字符串分开,变成 ["hi", "سلام", "ali", "علی"]

这个字符串里只包含英语和波斯语的字符(可以有空格,也可以没有),我想把它分成连续的同一种语言的字符。

有没有简单的方法可以从字符串中提取连续的英语字符,并把剩下的字符分开呢?

1 个回答

5

你可以使用 re.split() 来根据 ASCII 字母进行分割:

re.split(r'([a-zA-Z]+)', inputstring)

下面是一个 Python 3 的示例:

>>> inputstring = "hiسلامaliعلی"
>>> re.split(r'([a-zA-Z]+)', inputstring)
['', 'hi', 'سلام', 'ali', 'علی']

如果想扩展到完整的 Latin-1 字符范围,可以这样做:

re.split(r'([a-zA-Z\xC0-\xFF]+)', inputstring)

对于 Python 2,确保使用 unicode 字符串,并在正则表达式前加上 u

re.split(ur'([a-zA-Z\xC0-\xFF]+)', inputstring)

在所有情况下,如果拉丁文本出现在字符串的开头或结尾,分割时会插入一个空字符串;你可以用以下方法去掉这些空字符串:

result = [s for s in re.split(r'([a-zA-Z\xC0-\xFF]+)', inputstring) if s]

撰写回答