我想将 "hiسلامaliعلی" 之类的字符串拆分为 ["hi", "سلام", "ali", "علی"]

初始字符串仅包含英语和波斯语字符(带或不带空格),我想将其拆分为继续相同的语言字符。

有没有一种简单的方法可以从字符串中提取连续的英文字符并拆分剩余字符?

最佳答案

您可以使用 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]

关于python将字符串拆分为具有相同语言字符的字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25155279/

10-12 21:57
查看更多