Конкатенация строк в python в многострочном

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

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

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

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" ;

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

Ответы

Ответ 1

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

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")

Ответ 2

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

a_str = """This is a line
       {str1}
       This is line 2
       {str2}
       This is line 3""".format(str1="blabla", str2="blablabla2")

Ответ 3

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

my_str = '\n'.join(['string1', variable1, 'string2', variable2])

Ответ 4

Python 3: отформатированные строки

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

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

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

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 потому что это имя самого типа данных.

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