3 回答
TA贡献1830条经验 获得超3个赞
如果始终只有一个中文文本跨度,您可以只在第一个空格处拆分:
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:]
TA贡献1886条经验 获得超2个赞
您也可以尝试正则表达式:
import re
s = '人均收入 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
TA贡献1853条经验 获得超9个赞
对我来说很难使用正则表达式。我更喜欢做这个选项:
import string
i = 0
CHINESE = ''
ENGLISH = ''
while i < len('人均收入 Per capital Income'):
if '人均收入 Per capital Income'[i] in string.ascii_letters:
break
i += 1
CHINESE = '人均收入 Per capital Income'[:i-1]
ENGLISH = '人均收入 Per capital Income'[i:]
添加回答
举报