Python将字符串分割为相同语言字符的子串
我想把像 "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]