Как пропустить "\ n" при использовании функции объединения строк в Python? - PullRequest
2 голосов
/ 20 февраля 2020

Например, у меня есть код здесь:

string_list = ['a', 'b', 'c\n', 'd', 'e', 'f']
print(' '.join(string_list))

Вывод будет:

a b c
 d e f

Как получить результат:

a b c
d e f

вместо

Ответы [ 3 ]

2 голосов
/ 20 февраля 2020

Это похоже на работу:

string_list = ['a', 'b', 'c\n', 'd', 'e', 'f']

output = "".join(x + " " if not "\n" in x else x for x in string_list)[:-1]

print(output)

Вывод:

a b c
d e f

Как указывалось @wjandrea, мы можем использовать s if s.endswith('\n') else s + ' ' for s in string_list вместо x + " " if not "\n" in x else x for x in string_list. Мы также могли бы использовать x if x[-1] == "\n" else x + " " for x in string_list. Оба немного чище.

0 голосов
/ 20 февраля 2020

Спасибо всем за ответ на мой вопрос. Я сам придумал решение:

string_list = ['a', 'b', 'c\n', 'd', 'e', 'f']
joined_string = ' '.join(string_list)
print(joined_string.replace('\n ', '\n'))

Это работает!

0 голосов
/ 20 февраля 2020

Это довольно просто, если вы полностью игнорируете join.

string_list = ['a', 'b', 'c\n', 'd', 'e', 'f']
output = ""
for string in string_list:
    output += string + (" " if not string.endswith("\n") else "")
output = output.rstrip() # If you don't want a trailing " ".
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...