用大写字母拆分一串单词

2024-06-01 01:14:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一组名字,姓是大写的,名字和中间名是正常的,例如

OBAMA Barack
DEL MONTE Alfredo

我想把这些分开

^{pr2}$

Python的方法是什么?在


Tags: 方法名字montedel大写barackobamaalfredo
3条回答
def split_names(names):
    for s in names:
        last_names = []
        name_parts = s.split()
        while name_parts and name_parts[0].isupper():
            last_names.append(name_parts.pop(0))
        yield ' '.join(last_names), ' '.join(name_parts)


names = ["OBAMA Barack", "DEL MONTE Alfredo"]
for last_name, first_name in split_names(names):
    print last_name
    print first_name
    print

印刷品:

^{pr2}$
>>> import itertools
>>> [
...    ' '.join(items)
...    for _, items in itertools.groupby('DEL MONTE Alfredo'.split(), str.isupper)
... ]
['DEL MONTE', 'Alfredo']

可以使用一个简单的正则表达式:

import re

a = "DEL MONTE Alfredo"
first, last = re.match(r'([A-Z ]+)\s+(.+)', a).groups()

或者循环查看单词列表并过滤掉所有大写字母:

^{pr2}$

在我个人看来,“最棒的Python”===“最简单的”。在

相关问题 更多 >