Правильный перенос строки в Python
Подскажите, есть список с фразами, но они длинные и PEP8 ругается за длину строки. Часть фразы переношу символом \ , но тогда он считает и все пробелы. Пример:
list_of_words = ["The weather is good.", "Hot dog is the best food, \ it would be a sure sign that it was still yummy.", "The girls are beautiful.", "Текст любой, не важно, но после бэкслэша огромное \ расстояние между словами. Как это исправить?"] print(*list_of_words)
The weather is good. Hot dog is the best food, it would be a sure sign that it was still yummy. The girls are beautiful. Текст любой, не важно, но после бэкслэша огромное растояние между словами. Как это исправить?
Как избежать этой ерунды? P.S. Можно написать конечно так, но есть другой способ?
list_of_words = ["The weather is good.", "Hot dog is the best food, \ it would be a sure sign that it was still yummy.", "The girls are beautiful.", "Текст любой, не важно, но после бэкслэша огромное \ растояние между словами. Как это исправить?"] print(*list_of_words)
[python][str] Перенос строк в коде
Так вот, меня интересует, как такое сделать в Python, особенно если используется форматирование строк. Как переносить строки (объекты типа str) так, чтобы сохранять отступы ?
Можно использовать синтаксис с тройными кавычками
def f2(): s = '''This is a multi-line string with param1=<> and param2=<>'''.format(100,200) return s ss = f2() print(ss)
This is a multi-line string with param1=100 and param2=200
Но код выгдядит некрасиво.
Более-менее приемлемо так:
def zz(): s = ('line 1 param=; '+\ 'line 2 param=; '+\ 'line 3 param=').format(10,20,30) return s ss = zz() print(ss)
line 1 param=10; line 2 param=20; line 3 param=30
Python-сообщество
- Начало
- » Django
- » Перенос строк TextField
#1 Май 3, 2013 10:33:54
876974 От: Russia Зарегистрирован: 2013-05-03 Сообщения: 3 Репутация: 0 Профиль Отправить e-mail
Перенос строк TextField
Доброго времени.
Поскольку я ещё новичок в Python а так же в изучении Django.
Возникло несколько вопросов при разработке мелкого проекта.
Вопрос в следующем.
Имеется Модель с содержанием:
models.TextField()
А для поддержки различных html тегов вывод ее осуществляется через:
>
Но поскольку при написании нужного мне материала в данную модель осуществляется без каких либо дополнительных bb редакторов, в частности имеется ввиду такой как TinyMCE, то просматриваемый материал не сохраняет перенос строк осуществленный при написании, хотя в базе данных этот перенос успешно сохраняется \n.
Возможно ли каким либо образом осуществить перенос строк, не используя различных редакторов при написании, но и не меняя отображения используя > дабы сохранить возможность использования html.
#2 Май 3, 2013 16:35:46
newca9h Зарегистрирован: 2012-05-28 Сообщения: 46 Репутация: 3 Профиль Отправить e-mail
Перенос строк TextField
Здравствуйте! Напишите шаблонный фильтр, который будет изменять символ переноса строки на тег
например. Ссылка.
Можно написать вот так:
@register.filter(is_safe = True) def replace_n(value): return value.replace('\n', '
')
Отредактировано newca9h (Май 3, 2013 16:46:15)
Python: Multi-line строки
Представьте, что нам нужно определить строку, которая состоит из нескольких строчек — то есть внутри есть переводы строки \n . Например, она будет выглядеть так:
text = 'Пример текста,\nсостоящего из\nнескольких строк'
На печати строка примет совсем другой вид:
Пример текста, состоящего из нескольких строк
Для таких ситуаций в Python есть еще один способ создания строк, который называется multi-line строки. Чтобы описать такую «многострочную строку», нужно заключить ее в тройные кавычки — «»» или »’ . Внутри multi-line строки можно переносить текст и не использовать перевод строки \n :
text = '''Пример текста, состоящего из нескольких строк '''
Пример текста, состоящего из нескольких строк
Обратите внимание, что в конце текста есть пустая строка. Она появилась в тексте потому, что мы поставили закрывающие кавычки »’ на новой строке. Если не переносить закрывающие кавычки на новую строку, то пустая строка в тексте не появится:
text = '''Пример текста, состоящего из нескольких строк'''
Пример текста, состоящего из нескольких строк
Из-за тройных кавычек multi-line строки позволяют не экранировать кавычки внутри строки:
Здесь не нужно экранировать 'одинарные' и "двойные" кавычки
Еще multi-line строки могут становиться f-строками для интерполяции:
a = 'A' b = 'B' # Слева добавился f text = f''' и сидели на трубе '''
А и B сидели на трубе
Для компьютера неважно, какие способы соединения и переноса строк вы будете использовать. Он все равно произведет вычисления и выдаст нужный результат. Интерполяция и multi-line строки используются для удобства разработчиков, чтобы им было проще читать код.
Задание
Запишите в переменную text текст, который приведен ниже. Используйте тройные кавычки.
Lannister, Targaryen, Baratheon, Stark, Tyrell. they're all just spokes on a wheel. This one's on top, then that one's on top, and on and on it spins, crushing those on the ground.
Упражнение не проходит проверку — что делать?
Если вы зашли в тупик, то самое время задать вопрос в «Обсуждениях». Как правильно задать вопрос:
- Обязательно приложите вывод тестов, без него практически невозможно понять что не так, даже если вы покажете свой код. Программисты плохо исполняют код в голове, но по полученной ошибке почти всегда понятно, куда смотреть.
В моей среде код работает, а здесь нет
Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.
Мой код отличается от решения учителя
Это нормально , в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи.
В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.
Прочитал урок — ничего не понятно
Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в «Обсуждениях». Идеально, если вы сформулируете непонятные моменты в виде вопросов. Обычно нам нужно несколько дней для внесения правок.
Кстати, вы тоже можете участвовать в улучшении курсов: внизу есть ссылка на исходный код уроков, который можно править прямо из браузера.
