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:]
添加回答
舉報