Поменять местами строки в python - PullRequest
1 голос
/ 30 апреля 2020

У меня есть строка, которая выглядит следующим образом:

string1 = "Hello" + '\n' + "Smith" +'\n'+ "Jake" +'\n'+ "I am"
print(string1)

Это распечатывает:

Hello
Smith
Jake
I am

Однако Я бы хотел, чтобы это было изменено на следующее:

Hello
I am
Jake
Smith

Теперь некоторые могут сказать, что нужно просто переключить «Я есть» и «Смит» в вашей исходной строке, но дело в том, что я не могу сделай это. Мне нужно искать другой способ редактировать строку после.

Одно уточнение: «Смит» может быть другим именем, а «Я есть» может быть другой фразой, такой как «Вы есть». Поэтому строки 2 и 4 не всегда будут «Смит» и «Я есть» соответственно.

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

Исходный вывод:

Hi,
Doe?
John
Are you

Требуемый вывод:

Hi,
Are you
John
Doe?

По существу мне нужно что-то, что может поменять четвертую строку строки со второй строкой.

В основном я пытался разбить строку на «\ n» на список, а затем поменять местами значения в списке, а затем снова соединить список с «\ n», но это действительно ужасно. Мне интересно, есть ли лучшая альтернатива.

Ответы [ 2 ]

2 голосов
/ 30 апреля 2020

Как насчет этого?

>>> one, two, three, four = string1.splitlines()
>>> '\n'.join((one, four, three, two))
'Hello\nI am\nJake\nSmith'

Или это?

>>> lines = string1.splitlines()
>>> '\n'.join([lines[0], *reversed(lines[1:])])
'Hello\nI am\nJake\nSmith'

Или это?

>>> lines = string1.splitlines()
>>> lines[1:] = reversed(lines[1:])
>>> '\n'.join(lines)
'Hello\nI am\nJake\nSmith'

Или это?

>>> lines = string1.splitlines()
>>> lines[1], lines[3] = lines[3], lines[1]
>>> '\n'.join(lines)
'Hello\nI am\nJake\nSmith'
1 голос
/ 30 апреля 2020
string1 = "Hello" + '\n' + "Smith" +'\n'+ "Jake" +'\n'+ "I am"
phrases = string1.split("\n")
phrases[1], phrases[3] = phrases[3], phrases[1]
print("\n".join(phrases))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...