Як писати рядкові літерали в python, не виходячи з них?


97

Чи є спосіб оголосити рядкову змінну в python так, що все, що знаходиться всередині неї, автоматично захищається, або має значення буквального символу?

Я не питаю, як уникнути цитат через скісні риски, це очевидно. Те, про що я прошу, - це спосіб загального призначення для створення всього в рядковому літералі, щоб мені не довелося вручну проходити і уникати всього для дуже великих рядків. Хтось знає рішення? Дякую!

Відповіді:



69

Якщо ви маєте справу з дуже великими рядками, особливо з багаторядковими рядками, майте на увазі синтаксис із трьома лапками :

a = r"""This is a multiline string
with more than one line
in the source code."""

1
Ця конструкція вводить символи розриву рядка? Тобто змінна aміститиме рядок із двома символами розриву рядка?
MadPhysicist

7
@MadPhysicist: Так, отриманий рядок міститиме два нові рядки у наведеному вище випадку.
Greg Hewgill

Зрозумів. І якщо для цього рядка використовується 'split ()', чи буде він за замовчуванням розділений на рядки?
MadPhysicist

1
@MadPhysicist Типовим для .split () є розділення пробілами, а нові рядки - пробілами.
Greg Hewgill

1
Я використовував це раніше, і воно працює чудово. Дві речі, про які слід пам’ятати: включено відступ (пробіли) на інших рядках, що є бажаним; якщо довгий рядок випадково закінчується "без користі, оскільки все це закінчиться """" синтаксичною помилкою.
Нагєв

9

Цього немає. Схоже, ви хочете щось на зразок "тут документів" у Perl та оболонках, але у Python цього немає.

Використання необроблених рядків або багаторядкових рядків означає лише те, що потрібно менше турбуватися. Якщо ви використовуєте необроблений рядок, вам все одно доведеться обійти термінал "\", і з будь-яким рішенням рядка вам доведеться турбуватися про закриття ", ',' '' або" "", якщо він включений у ваші дані .

Тобто, немає можливості мати рядок

 '   ''' """  " \

належним чином зберігається в будь-якому рядковому літералі Python без внутрішнього екранування якогось типу.



1

(Припускаючи, що вам не потрібно вводити рядок безпосередньо всередині коду Python)

щоб обійти проблему, на яку звернув увагу Ендрю Далке, просто введіть буквальний рядок у текстовий файл, а потім скористайтеся цим;

input_ = '/directory_of_text_file/your_text_file.txt' 
input_open   = open(input_,'r+')
input_string = input_open.read()

print input_string

Це надрукує буквальний текст того, що є в текстовому файлі, навіть якщо він є;

 '   ''' """   \

Не весело і не оптимально, але може бути корисним, особливо якщо у вас є 3 сторінки коду, які потребували б екранування символів.


-1

якщо рядок є змінною, використовуйте. метод repr на ньому:

>>> s = '\tgherkin\n'

>>> s
'\tgherkin\n'

>>> print(s)
    gherkin

>>> print(s.__repr__())
'\tgherkin\n'

Однак це не вважається поганим стилем?
shah.shah

що, корнішони?
маркування

1
repr(s)замість цього можна використовувати кращий стиль
xuiqzy
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.