gpt4 book ai didi

Python:有什么方法可以在多语言(例如中文和英文)字符串上执行此 "hybrid"split()?

转载 作者:太空狗 更新时间:2023-10-29 20:17:37 25 4
gpt4 key购买 nike

我有多种语言的字符串,包括使用空格作为单词分隔符的语言(英语、法语等)和不使用空格的语言(中文、日语、韩语)。

给定这样一个字符串,我想用空格作为分隔符将英语/法语/等部分分隔成单词,并将中文/日语/韩语部分分隔成单个字符。

我想将所有这些分离的组件放入一个列表中。

一些例子可能会清楚地说明这一点:

案例 1:仅限英文的字符串。这个案例很简单:

>>> "I love Python".split()
['I', 'love', 'Python']

情况2:中文字符串:

>>> list(u"我爱蟒蛇")
[u'\u6211', u'\u7231', u'\u87d2', u'\u86c7']

在这种情况下,我可以将字符串转换为汉字列表。但在列表中,我得到了 unicode 表示:

[u'\u6211', u'\u7231', u'\u87d2', u'\u86c7']

如何让它显示实际字符而不是 unicode?像这样的东西:

['我', '爱', '蟒', '蛇']

??

案例三:中英混用:

我想把一个输入字符串如

"我爱Python"

然后把它变成这样的列表:

['我', '爱', 'Python']

有没有可能做这样的事情?

最佳答案

我想我也会展示正则表达式方法。这对我来说感觉不对,但这主要是因为我看到的所有特定于语言的 i18n 奇怪之处让我担心正则表达式可能对所有这些都不够灵活——但你可能不需要任何那个。 (换句话说——过度设计。)

# -*- coding: utf-8 -*-
import re
def group_words(s):
regex = []

# Match a whole word:
regex += [ur'\w+']

# Match a single CJK character:
regex += [ur'[\u4e00-\ufaff]']

# Match one of anything else, except for spaces:
regex += [ur'[^\s]']

regex = "|".join(regex)
r = re.compile(regex)

return r.findall(s)

if __name__ == "__main__":
print group_words(u"Testing English text")
print group_words(u"我爱蟒蛇")
print group_words(u"Testing English text我爱蟒蛇")

在实践中,您可能只想编译正则表达式一次,而不是在每次调用时都编译一次。同样,填写字符分组的详细信息由您决定。

关于Python:有什么方法可以在多语言(例如中文和英文)字符串上执行此 "hybrid"split()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3801431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com