Как аккуратно объединить часть списка при печати на Python

name = "Joe Van Schmo"
rname = name.split()
print ('{}, {}'.format(rname[-1],rname[0:-1]))

В идеале я хочу, чтобы возвращение было (Все, кроме первого слова), (первое слово), но я не уверен, как быстрее всего скомбинировать Van и Schmo.

Любая помощь приветствуется. Спасибо

Желаемый результат? Подумайте о том, чтобы узнать, что такое минимальный воспроизводимый пример.

iBug 27.09.2018 04:49
rname[-1] - это не первое слово, это последнее слово. Точно так же rname[0:-1] - это почти последнее слово.
DYZ 27.09.2018 04:50

Вы ищете «Ван Шмо, Джо» на выходе?

cs95 27.09.2018 04:51

@coldspeed это правильно

pwfcafe 27.09.2018 05:07
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
4
39
4

Ответы 4

Вы можете использовать параметр maxsplit для str.split:

name = "Joe Van Schmo"
fname, rname = name.split(None, 1)
print ('{}, {}'.format(rname, fname))

Это выводит:

Van Schmo, Joe

Первое слово:

rname[0]

Все, кроме первого слова:

rname[1:]

Если вы хотите объединить его с пробелами:

' '.join(rname[1:])

Итак, ваша последняя строка кода должна была быть:

print ('{}, {}'.format(' '.join(rname[1:]),rname[0]))

Вы можете указать Параметр maxsplit в str.split или, если вы знаете, что у вас будет ровно один пробел между именем и остальной частью имени, str.partition предполагает не более одного сплита.

name = "Joe Van Schmo"
# Raises exception if no spaces in name
firstname, restname = name.split(maxsplit=1)  # Equivalently, name.split(None, 1)

# Or without exceptions, but with possibly odd output for spaceless names
firstname, sep, restname = name.partition(' ')

print ('{}, {}'.format(restname, firstname))

@blhsing: Где ОП сказал это?

ShadowRanger 27.09.2018 04:56

Мои извенения. Я перепутал с другим вопросом.

blhsing 27.09.2018 04:56

Вы также можете нарезать .split() прямо в заявлении для печати.

print('{}, {}'.format(' '.join(name.split()[1:]), name.split()[0]))
Van Schmo, Joe

Другие вопросы по теме