Использование кавычек внутри кавычек - PullRequest
50 голосов
/ 29 января 2012

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

Например:

print " "a word that needs quotation marks" "

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

Как я могу это сделать?

Ответы [ 8 ]

147 голосов
/ 29 января 2012

Вы можете сделать это одним из трех способов:

1) Используйте одинарные и двойные кавычки:

>>> print '"A word that needs quotation marks"'
"A word that needs quotation marks"

2) Избегайте двойных кавычек в строке:

>>> print "\"A word that needs quotation marks\""
"A word that needs quotation marks" 

3) Использовать строки в тройных кавычках:

>>> print """ "A word that needs quotation marks" """
"A word that needs quotation marks" 
9 голосов
/ 29 января 2012

Вам нужно сбежать от него:

>>> print "The boy said \"Hello!\" to the girl"
The boy said "Hello!" to the girl
>>> print 'Her name\'s Jenny.'
Her name's Jenny.

См. Страницу Python для строковых литералов .

4 голосов
/ 29 января 2012

Python принимает и "и" как кавычки, так что вы можете сделать это как:

>>> print '"A word that needs quotation marks"'
"A word that needs quotation marks"

В качестве альтернативы, просто экранируйте внутренние "s

>>> print "\"A word that needs quotation marks\""
"A word that needs quotation marks"
3 голосов
/ 29 января 2012

Используйте буквальный escape-символ \

print("Here is, \"a quote\"")

Символ в основном означает игнорировать семантический контекст моего следующего символа и иметь дело с ним в его буквальном смысле .

1 голос
/ 25 июня 2018

Если у вас есть несколько таких слов, которые вы хотите объединить в строку, я рекомендую использовать format или f-strings, которые значительно повышают читаемость (на мой взгляд).

Чтобы привести пример:

s = "a word that needs quotation marks"
s2 = "another word"

Теперь вы можете сделать

print('"{}" and "{}"'.format(s, s2))

, который будет печатать

"a word that needs quotation marks" and "another word"

Начиная с Python 3.6 выможно использовать:

print(f'"{s}" and "{s2}"')

с тем же выходом.

1 голос
/ 24 ноября 2017

Один случай, который преобладает в дубликатах, - это требование использовать кавычки для внешних процессов. Обходной путь для этого состоит в том, чтобы не использовать оболочку, которая снимает требование для одного уровня цитирования.

os.system("""awk '/foo/ { print "bar" }' %""" % filename)

может быть с пользой заменен на

subprocess.call(['awk', '/foo/ { print "bar" }', filename])

(которая также исправляет ошибку, из-за которой метасимволы оболочки в filename должны были быть экранированы из оболочки, что не удалось сделать исходному коду; но без оболочки это не нужно).

Конечно, в подавляющем большинстве случаев вам не нужен или вообще не нужен внешний процесс.

with open(filename) as fh:
    for line in fh:
        if 'foo' in line:
            print("bar")
1 голос
/ 11 апреля 2012

в Python 3.2.2 для Windows,

print(""""A word that needs quotation marks" """) 

в порядке. Я думаю, что это расширение интерпретатора Python.

0 голосов
/ 30 августа 2017

Вы также можете попробовать добавить строку: print " "+'"'+'a word that needs quotation marks'+'"'

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