python将字符串拆分为具有相同语言字符的字符串

python将字符串拆分为具有相同语言字符的字符串,python,string,split,non-english,Python,String,Split,Non English,我希望将像“hiسل㶋مaliعلی”这样的字符串拆分为[“hi”,“سل㶋م”,“ali”,“علی”] 初始字符串只包含英语和波斯语字符(带空格或不带空格),我想将其拆分为相同的语言字符 有没有一种简单的方法可以从字符串中提取连续的英文字符并拆分剩余的字符?您可以使用re.split()对ASCII字母进行拆分: Python 3的演示: >>> inputstring = "hiسلامaliعلی" >>> re.split(r'([a-zA-Z]+)

我希望将像“hiسل㶋مaliعلی”这样的字符串拆分为
[“hi”,“سل㶋م”,“ali”,“علی”]

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


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

您可以使用
re.split()
对ASCII字母进行拆分:

Python 3的演示:

>>> inputstring = "hiسلامaliعلی"
>>> re.split(r'([a-zA-Z]+)', inputstring)
['', 'hi', 'سلام', 'ali', 'علی']
将其扩展到完整的拉丁语-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]

拉丁语系呢?ASCII+重音?英语字符指的是拉丁语范围。谢谢。但是它在开始时仍然是一个空字符串:['''hi'、'\xd8\xb3\xd9\x84\xd8\xa7\xd9\x85'、'ali'、'\xd8\xb9\xd9\x84\xdb\x8c']@ali:是的,这是使用
re.split()
的产物。我能确保第一个字符串始终是空的吗?@ali:仅当输入字符串的第一个字符是拉丁字符时。如果最后一个字符是拉丁字符,那么结尾也会有一个空字符串。@Martjin Pieters:在扩展版本中,非英语单词在T字符中被拆分。我认为应该使用大X: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]