One of the option is just to split before the first English character and take the 1st and 2nd group
inputstring = '小西 - 杏花 Siu Sai - Heng Fa'
a = re.split(r'([a-zA-Z].*)', inputstring)
>>>['小西 - 杏花 ', 'Siu Sai - Heng Fa', '']
Another way to do this without an empty string is to use the regex ?=[a-z]
as pointed out by @blhsing
a = re.split(r'(?:=[a-z])', inputstring)
2
solved How to split chinese and english word once only?