У меня есть несколько строк для объединения, и результирующая строка будет довольно длинной. У меня также есть несколько переменных, которые нужно объединить.

Как можно объединить строки и переменные, чтобы в результате получилась многострочная строка?

Следующий код вызывает ошибку.

str = "This is a line" +
       str1 +
       "This is line 2" +
       str2 +
       "This is line 3" ;

Я тоже пробовал это

str = "This is a line" \
      str1 \
      "This is line 2" \
      str2 \
      "This is line 3" ;

Пожалуйста, предложите способ сделать это.

54
user3290349 15 Дек 2015 в 20:41

4 ответа

Лучший ответ

Есть несколько способов. Простое решение - добавить круглые скобки:

strz = ("This is a line" +
       str1 +
       "This is line 2" +
       str2 +
       "This is line 3")

Если вы хотите, чтобы каждая «строка» находилась на отдельной строке, вы можете добавить символы новой строки:

strz = ("This is a line\n" +
       str1 + "\n" +
       "This is line 2\n" +
       str2 + "\n" +
       "This is line 3\n")
60
Bryan Oakley 15 Дек 2015 в 17:50

Python не php, и вам не нужно ставить $ перед именем переменной.

a_str = """This is a line
       {str1}
       This is line 2
       {str2}
       This is line 3""".format(str1="blabla", str2="blablabla2")
13
Diogo Martins 15 Дек 2015 в 17:47

Я бы добавил все, что мне нужно, чтобы объединить в список, а затем присоединить его к разрыву строки.

my_str = '\n'.join(['string1', variable1, 'string2', variable2])
1
Dušan Maďar 15 Дек 2015 в 17:42

Решения для Python 3 с использованием форматированных строк

Начиная с Python 3.6 вы можете использовать так называемые «отформатированные строки» (или «f строки»), чтобы легко вставлять переменные в ваши строки. Просто добавьте f перед строкой и напишите переменную внутри фигурных скобок ({}) следующим образом:

>>> name = "John Doe"
>>> f"Hello {name}"
'Hello John Doe'

Чтобы разделить длинную строку на несколько строк, окружите части круглыми скобками (()) или используйте многострочную строку (строку, заключенную в три кавычки {{ X1}} или ''' вместо одного).

1. Решение: круглые скобки

С круглыми скобками вокруг ваших строк вы даже можете объединить их без знака + между ними:

a_str = (f"This is a line \n{str1}\n"
         f"This is line 2 \n{str2}\n"
         "This is line 3") # no variable here, so no leading f

Полезно знать . Если в строке нет переменной, нет нужды в начале f для этой строки.

Полезно знать: один и тот же результат можно заархивировать с помощью обратной косой черты (\) в конце каждой строки вместо круглых скобок, но в соответствии с PEP8 вы должны предпочесть скобки для продолжения строки:

Длинные строки можно разбить на несколько строк, заключив выражения в круглые скобки. Их следует использовать вместо использования обратной косой черты для продолжения строки.

2. Решение: многострочная строка

В многострочные строки вам не нужно явно вставлять \n, Python позаботится об этом за вас:

a_str = f"""This is a line
        {str1}
        This is line 2
        {str2}
        This is line 3"""

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


Кстати, вы не должны вызывать переменную str, потому что это имя самого типа данных.

Источники для форматированных строк:

9
winklerrr 30 Окт 2019 в 08:34