Как присвоить значение переменной, когда запись значения занимает несколько строк (Python)

1

У меня есть переменная x, которой я хочу назначить очень длинную строку. Поскольку строка довольно длинная, я разбил ее на 10 подстрок. Я хотел бы сделать что-то вроде этого:

x =
   'a very long string - part 1'+
   'a very long string - part 2'+
   'a very long string - part 3'+
                ...
   'a very long string - part 10'

Но получается, что это недопустимый синтаксис. Каков допустимый синтаксис для этого?

Теги:
string
variable-assignment

2 ответа

5
Лучший ответ

Если вам нужна строка без строк, вы можете

>>> x = (
... 'a very long string - part 1' +
... 'a very long string - part 2' +
... 'a very long string - part 3' )
>>> x
'a very long string - part 1a very long string - part 2a very long string - part 3'
>>> 

Оператор + не нужен с строковыми литералами:

2.4.2. Конкатенация строковых литералов

Разрешены несколько соседних строковых литералов (ограниченных пробелами), возможно, с использованием разных соглашений о цитировании, и их значение совпадает с их конкатенацией. Таким образом, "привет" "мир" эквивалентен "helloworld". Эта функция может быть использована для уменьшения количества требуемых обратных косых черт, для разделения длинных строк удобно по длинным линиям или даже для добавления комментариев к частям строк, например:

re.compile("[A-Za-z_]"       # letter or underscore
       "[A-Za-z0-9_]*"   # letter, digit or underscore
      )

Ваш случай:

>>> x = (
... 'a very long string - part 1' 
... 'a very long string - part 2' 
... 'a very long string - part 3' )
>>> x
'a very long string - part 1a very long string - part 2a very long string - part 3'
>>> 
  • 1
    +1 за решение без оператора +
4

Обычно Python указывает, что одна строка продолжается до следующей, но если она не помещает обратную косую черту в конце каждой строки:

>>> x = 'a' + \
...     'b' + \
...     'c'
>>> x
'abc'

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

>>> x = ('a' +
...      'b' +
...      'c')
>>> x
'abc'

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

>>> x = """a very long string part 1
... a very long string part 2
... a very long string part 3
... a very long string part 4"""
>>> x
'a very long string part 1\na very long string part 2\na very long string part 3\na very long string part 4'
  • 0
    Благодарю. Обратная косая черта это то, что я искал
  • 0
    @snakile Я лично стараюсь избегать обратной косой черты (и использую круглые скобки () или аналогичные), потому что вы можете бездумно добавлять новую строку без необходимости запоминать `\`. Кроме того, если после символа продолжения есть пробел, он выдаст ошибки.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню