为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用python拆分字符串中的中文单词和英文单词?

如何使用python拆分字符串中的中文单词和英文单词?

达令说 2023-02-15 16:33:25
例如,我有一些字符串如下所示:'人均收入 Per capital Income','总产值 Gross Output Value'.我想把它们分成'人均收入' 'Per capital Income''总产值' 'Gross Output Value'汉字总是在英文单词之前。
查看完整描述

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:]


查看完整回答
反对 回复 2023-02-15
?
MM们

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 


查看完整回答
反对 回复 2023-02-15
?
暮色呼如

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:]


查看完整回答
反对 回复 2023-02-15
  • 3 回答
  • 0 关注
  • 186 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信