如果始终只有一个中文文本跨度,您可以只在第一个空格处拆分:s.split(' ', 1)如果中文文本中可能有空格,您可以查找第一个不是空格的 ASCII 字符:for ii, ch in enumerate(s): if not ch.isspace() and ch.isascii(): break当该循环完成时,它会将iiset 保留为第一个非空格的 ASCII 字符的索引。你可以把它变成一个像这样的函数并像这样进行拆分:def split_ascii(s): for ii, ch in enumerate(s): if not ch.isspace() and ch.isascii(): break return s[:ii].rstrip(), s[ii:]
您也可以尝试正则表达式:import res = '人均收入 Per capital Income'result = re.match(r"([\u4e00-\u9fa5]*)([A-Za-z\s]*)", s)print(result.group(1)) # 人均收入print(result.group(2)) # Per capital Income
对我来说很难使用正则表达式。我更喜欢做这个选项:import stringi = 0CHINESE = ''ENGLISH = ''while i < len('人均收入 Per capital Income'): if '人均收入 Per capital Income'[i] in string.ascii_letters: break i += 1CHINESE = '人均收入 Per capital Income'[:i-1]ENGLISH = '人均收入 Per capital Income'[i:]