#python #html #string
#python #HTML #строка
Вопрос:
Я создаю выходной файл HTML, используя ванильный Python 3, и я хочу использовать макет с несколькими вкладками (http://www.w3schools.com/howto/tryit.asp?filename=tryhow_js_tabs_close ), чтобы помочь организовать мою презентацию.
При попытке печати: ' <li><a href="#" class="tablinks active" onclick="openTab(event, 'Faults')"><b>Faults</b></a></li>'
я сталкиваюсь с ситуацией, когда мне нужно включить символы (‘) и («) в строку. Я пытался использовать только символы («) внутри строки и использовать (‘) для определения строки, однако это нарушает функциональность html кода.
Если я использую 'partial string {}Faults{} more string'.format("'","'")
, я вижу этот вывод:
' <li><a href="#" class="tablinks active" onclick="openTab(event, 'Faults')"><b>Faults</b></a></li>)'
Аналогично, если я попытаюсь объединить строки вместе,
b = ' <li><a href="#" class="tablinks active" onclick="openTab(event, '
c = "'Faults'"
d = ')"><b>Faults</b></a></li>)
('').join([b,c,d])
Я получаю точно то же самое, что и при моей первой попытке.
' <li><a href="#" class="tablinks active" onclick="openTab(event, 'Faults')"><b>Faults</b></a></li>)'
Есть ли какой-либо способ обойти эту проблему при печати в файл?
Спасибо.
Комментарии:
1. «Я получаю точно то же самое, что и при моей первой попытке». Это то, что вы получаете при печати? Когда вы смотрите на результат в интерактивном приглашении? Или когда вы записываете это в файл и открываете файл с помощью блокнота? Каждый из них может отображаться иначе, чем другие.
2.
'
это escape-последовательность и она правильная.'singled 'quote' example'
=singled 'quote' example
Ответ №1:
' <li><a href="#" class="tablinks active" onclick="openTab(event, 'Faults')"><b>Faults</b></a></li>'
Вам нужно экранировать одинарные кавычки в одинарных кавычках. Если вы запишете это в файл, все будет так, как вы хотите.
Или используйте ''' <li><a href="#" class="tablinks active" onclick="openTab(event, 'Faults')"><b>Faults</b></a></li>'''
Обратите внимание на тройные кавычки?
Интересная статья об экранировании в Python: Изучайте Python трудным путем
Комментарии:
1. Это действительно помогло! Спасибо, что указали ресурсы, которые я могу прочитать, чтобы узнать больше. Я ценю это. Я работал с n раньше, но не думал ни о каких других связанных параметрах.
Ответ №2:
С вашим format
подходом нет проблем; то, что вы видите, — это просто представление строки в Python по умолчанию. Используйте print '...'.format("'", "'")
, и это должно выглядеть так, как вы ожидаете.
>>> print ' <li><a href="#" class="tablinks active" onclick="openTab(event, {}Faults{})"><b>Faults</b></a></li>'.format("'", "'")
<li><a href="#" class="tablinks active" onclick="openTab(event, 'Faults')"><b>Faults</b></a></li>
Однако вы можете избежать использования format
, просто используя многострочный строковый литерал ( """..."""
или '''...'''
), который может содержать неэкранированные кавычки любого вида.
>>> print ''' <li><a href="#" class="tablinks active" onclick="openTab(event, 'Faults')"><b>Faults</b></a></li>'''
<li><a href="#" class="tablinks active" onclick="openTab(event, 'Faults')"><b>Faults</b></a></li>
Ответ №3:
Используйте тройные символы '''
или """
. Это многострочная строка (и строка документа) в python.
Например:
'''
hello world! I can write ' and " and also " and ' "''""'''"""
'''
Комментарии:
1. Это не комментарий; Python все еще должен создать объект string, определенный литералом.
2. Да, это строка документа.
3. Однострочные строки также могут использоваться в качестве строк документа, а многострочные строки могут быть присвоены именам (
v = """..."""
). Эти две концепции полностью ортогональны.