- Python-сообщество
- Уведомления
- #1 Апрель 28, 2012 09:56:24
- Не работает переход на новую строку
- #2 Апрель 28, 2012 10:09:16
- Не работает переход на новую строку
- #3 Апрель 28, 2012 11:04:28
- Не работает переход на новую строку
- #4 Апрель 28, 2012 11:17:20
- Не работает переход на новую строку
- #5 Апрель 28, 2012 11:51:20
- Не работает переход на новую строку
- #6 Апрель 28, 2012 12:09:07
- Не работает переход на новую строку
- #7 Апрель 28, 2012 12:37:21
- Не работает переход на новую строку
- #8 Апрель 28, 2012 12:40:34
- Не работает переход на новую строку
- Не происходит перенос строки в функции print также как в значении словаря
- str Python
- Введение
- Пример
- Multiline Strings
- Универсальный перенос строки
- Escape Sequences
- Raw Strings
- Изменить тип на str
- Доступ к символам строки
- Методы (capitalize)
- Обрезать строку
- Unicode
- string Module
Python-сообщество
Уведомления
#1 Апрель 28, 2012 09:56:24
Не работает переход на новую строку
Имеется следующий код
#2 Апрель 28, 2012 10:09:16
Не работает переход на новую строку
Отредактировано XPb14 (Апрель 28, 2012 10:26:59)
#3 Апрель 28, 2012 11:04:28
Не работает переход на новую строку
Теперь и в блокноте все нормально. Был бы благодарен, если бы кто-то пояснил ситуацию, ибо хочется понять почему в этом случае не работал “\n”.
#4 Апрель 28, 2012 11:17:20
Не работает переход на новую строку
Спасибо за ссылку, изучаю. Вот только дело в том, что прямо в этом же модуле есть другая функция, которая практически эдентична здесь написанной, различие только в том, что “\n” стоит вначале каждой строки (я пробовал на этом примере сделать так, но безрезультатно). И там все нормально работает, да вобще везде все нормально работало, я первый раз с этим столкнулся и вот не могу понять в чем отличие этого кода.
Отредактировано XPb14 (Апрель 28, 2012 11:17:59)
#5 Апрель 28, 2012 11:51:20
Не работает переход на новую строку
>практически эдентична…да вобще везде все нормально работало
на разных платформах (Win, nix, Mac) — разные стандартные соглашение о том, как представляется переход на новую строку. И если Вы хотите определенности при записи в файл — делайте это вручную. Notepad++ умеет автоопределять новую строку; блокнот же следует Windows-соглашению. Никакого «волшебства».
#6 Апрель 28, 2012 12:09:07
Не работает переход на новую строку
Чесно говоря по вышеприведенной ссылке я уже более менее разобрался в вопросе. Но только суть в том, что все скрипты я запускаю на одной и той же машине, у себя на работе. И никогда даже не задумывался, что “\n” может не сработать. Очень много скриптов, которые ведут разного вида логи, т.е. запись в файл — одна из повседневных задач, а тут раз и не переводит строку. И, получается, что до этого у меня везде была ошибка. Так почему же раньше (сейчас все скрипты по прежнему работают и переводят на новую строку каретку по эскейпу “\n”, как и раньше) все нормально было, а именно тут сломалось. Вот что меня терзает. Суть проблемы — во всех скриптах, включая файл с этой функцией хватает простого “\n”, но в новой функции надо уже “\r\n”, хотя старые по прежнему работают.
#7 Апрель 28, 2012 12:37:21
Не работает переход на новую строку
здесь неуместно применять термин «ошибка». Есть несоответствиестандарту платформы, которое может и не быть заметным — в зависимости от того, «чем» Вы смотрите
вот например из описания open():
The most commonly-used values of mode are ‘r’ for reading, ‘w’ for writing (truncating the file if it already exists), and ‘a’ for appending (which on some Unix systems means that all writes append to the end of the file regardless of the current seek position). If mode is omitted, it defaults to ‘r’. The default is to use text mode, which may convert ‘\n’ characters to a platform-specific representation on writing and back on reading. Thus, when opening a binary file, you should append ‘b’ to the mode value to open the file in binary mode, which will improve portability. (Appending ‘b’ is useful even on systems that don’t treat binary and text files differently, where it serves as documentation.) See below for more possible values of mode.
…
In addition to the standard fopen() values mode may be ‘U’ or ‘rU’. Python is usually built with universal newline support; supplying ‘U’ opens the file as a text file, but lines may be terminated by any of the following: the Unix end-of-line convention ‘\n’, the Macintosh convention ‘\r’, or the Windows convention ‘\r\n’. All of these external representations are seen as ‘\n’ by the Python program. If Python is built without universal newline support a mode with ‘U’ is the same as normal text mode. Note that file objects so opened also have an attribute called newlines which has a value of None (if no newlines have yet been seen), ‘\n’, ‘\r’, ‘\r\n’, or a tuple containing all the newline types seen.
то есть Вам просто нужно четко понимать, что Вы получите при, например, записи в файл каким-то из способов — либо автоматическую конверсию под текущую платформу, либо побайтовое соответствие тому, что Вы пишете. При записи в файл, открытый open(file, ‘wb’), Вы получите конкретно то, что пишете; при open(file, ‘w’) — автопреобразование.
Отредактировано beelze (Апрель 28, 2012 12:41:18)
#8 Апрель 28, 2012 12:40:34
Не работает переход на новую строку
Огромное спасибо, наконец-то все стало на свои места. Теперь моя душа спокойна, я умиротворен, пойду поем. 🙂
Источник
Не происходит перенос строки в функции print также как в значении словаря
Здравствуйте. Подскажите, пожалуйста, как сделать перенос текста, который находится в значении словаря при выводе его через функцию print?
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Перенос строки в print
Здравствуйте. Извиняюсь за тупой вопрос но всё ж. Как каждый print вывести с новой строки? .
перенос длины вводимой строки в print при print(«Свинья шлепнулась в грязь!») — все.
Есть одна функция, есть другая функция и есть класс. Вопрос! Как перенести значение одной.
Как установить, при каком значении имеется нетривиальное решение системы, а также найти одно из них?
Например вот для этой системы: 12x + 15y + 11z = 83 11x — 14y + 13z = 70 13x + 11y — 12z = 90.
Добавлено через 26 секунд
Внимание на 2 строку
Добавлено через 1 минуту
Или как было у вас:
Рыжий Лис, любопытно. Во второй строке после точки около 5 пробелов и третья строчка продолжается с абзацы. Проблему с РЕР решили. Спасибо. Но появилась проблема с выводом.
Добавлено через 15 минут
Если сделать так:
Рыжий Лис, в Вашем варианте:
Надо было убрать табуляцию в коде.
Функции, по типу print и как они работают?
Я вчера начал изучать дельфи, перешёл с веб-программирования php. И теперь недоумеваю где мой.
Как найти ячейку с переносом строки в значении?
Здравствуйте! Есть ячейка в значении, которой используется перенос строки. Например ее значение.
Здравствуйте class Highwayman: def __init__(self, name, property1, NumberOfCheated): .
Уважаемые форумчане, прошу Вашей помощи. Не хватает знаний выполнить функцию при написании макроса.
Хочу чтобы функция print() работала как в языке Си — не печатала каждый раз с новой строки
Т.е. вызывать многократно print(), и что бы никаких переходов \n на новую строку без специального.
Как в индексаторе моей реализации «словаря» получить элемент словаря без перебора?
Пытался сдать лабу преподавателю, суть которой в открытом хешировании, создал свой словарь (класс.
Источник
str Python
Введение
Объект типа str содержит в себе поседовательность Unicode символов (Unicode code points)
Это Immutable объект. То есть после создания уже нельзя в нём что-то изменить.
Пример
Можно использовть как одинарные так и двойные кавычки. Если начали с одинарной то и закончить нужно одинарной — нельзя смешивать
File » «, line 1 «urn.su’ ^ SyntaxError: EOL while scanning string literal
File » «, line 1 ‘urn.su» ^ SyntaxError: EOL while scanning string literal
Один тип кавычек можно вложить в другой
>>> «Andrei’s site urn.su»
«Andrei’s site urn.su»
Multiline Strings
Многострочные переменные часто удобны для лучшей читаемости кода. Если вы вводите какое-то длинное значени
Их можно создать, заключив значение между «»» и «»» (или между »’ и »’)
>>> «»»Это пример . многострочной . переменной типа ..str»»»
‘Это пример \n многострочной \n переменной типа \n str’
Каждый перенос строки представлен символом \n . Я выделил его жёлтым для наглядности. Для Python это такой же символ как и остальные просто созданный с помощью экранирования , о котором мы поговорим чуть ниже.
Зададим переменной s значение с использованием \n
>>> s = ‘Это пример \n многострочной \n переменной типа \n str’ >>> print(s)
Это пример многострочной переменной типа str
Точно такой же результат можно получить используя «»» «»»
>>> s = «»»Это пример . многострочной . переменной типа . str»»» >>> print(s)
Это пример многострочной переменной типа str
Универсальный перенос строки
С помощью встроенного в Python Universal Newlines \n переводится в ту последовательность символов, которая принята в вашей операционной системе.
В Windows переход на новую строку (Carriage-return) это \r\n
В Linux, MacOS и других UNIX это \r
Работая с Python не нужно задумываться выборе символов для переноса строки — достаточно везде писать \n .
\ означает начало экранированной последовательности (Escape Sequence).
Также рекомендую к прочтению статью
Escape Sequences
Экранированный символ теряет своё изначальное значение и воспринимается интерпретатором как обычный символ либо наоборот приобретает дополнительный смысл как мы уже видели на примере \n
>>> «This is n it is a normal symbol»
‘This is n it is a normal symbol’
>>> s = «This is n it is a normal symbol»
>>> print(s)
This is n it is a normal symbol
>>> «This is \n it is an escaped symbol»
‘This is \n it is an escaped symbol’
>>> s = «This is \n it is an escaped symbol»
>>> print(s)
This is it is an escaped symbol
Вместо n теперь перенос строки
Экранирование можно применить для использования одинаковых кавычек внутри и снаружи строки
>>> «Двойная кавычка \» внутри двойных»
‘Двойная кавычка » внутри двойных’
>>> ‘Одинарная кавычка \’ внутри одинарных’
‘Одинарная кавычка ‘ внутри одинарных’
Если экранирование не подразумевается, то \ будет всё равно будет воспринят интерпретатором как попытка экранирования и не появится как обычный символ
>>> ‘Двойную кавычку \» можно не экранировать внутри одинарных а \’ одинарную нужно’
‘Двойную кавычку » можно не экранировать внутри одинарных а \’ одинарную нужно’
>>> s = ‘Двойную кавычку \» можно не экранировать внутри одинарных а \’ одинарную нужно’
Двойную кавычку » можно не экранировать внутри одинарных а ‘ одинарную нужно
Чтобы всё-таки увидеть \ нужно написать \\ то есть проэкранировать символ экранирования
| Escape Sequence | Значение | Примечания |
|---|---|---|
| \newline | Backslash and newline ignored | |
| \\ | Backslash (\) | |
| \’ | Single quote (‘) | |
| \» | Double quote («) | |
| \a | ASCII Bell (BEL) | |
| \b | ASCII Backspace (BS) | |
| \f | ASCII Formfeed (FF) | |
| \n | ASCII Linefeed (LF) | |
| \r | ASCII Carriage Return (CR) | |
| \t | ASCII Horizontal Tab (TAB) | |
| \v | ASCII Vertical Tab (VT) | |
| \ooo | Character with octal value ooo | (1,3) |
| \xhh | Character with hex value hh | (2,3) |
| Escape Sequence | Значение | Примечания | ||||||
|---|---|---|---|---|---|---|---|---|
\N | Character named name in the Unicode database | (4) | \uxxxx | Character with 16-bit hex value xxxx | (5) | \Uxxxxxxxx | Character with 32-bit hex value xxxxxxxx | (6) | |
| docs.python.org/3/reference/lexical_analysis.html | ||||||||
As in Standard C, up to three octal digits are accepted.
Unlike in Standard C, exactly two hex digits are required.
In a bytes literal, hexadecimal and octal escapes denote the byte with the given value. In a string literal, these escapes denote a Unicode character with the given value.
Changed in version 3.3: Support for name aliases 1 has been added.
Exactly four hex digits are required.
Any Unicode character can be encoded this way. Exactly eight hex digits are required.
Raw Strings
В случаях когда нужно использовать много символов нуждающихся в экранировании пригодятся raw strings
Они позволяют вводить данные практически в WYSIWYG виде.
Например, удобно использовать raw string для храния адреса системного пути в Windows
>>> path = r’C:\Users\Andrei\Sites\HeiHeiRu’
>>> path
Изменить тип на str
С помощью функции str() можно изменить тип объекта на строку. Обычо это используется с числами
Доступ к символам строки
Если нужно воспользоваться не всем объектом типа str а только каким-то символом, это лего сделать указав его порядковый номер в квадратных скобках.
Какой индекс нужно указать, чтоб получить точку?
Проверить тип переменной можно с помощью функции type()
У символа входящего в состав строки тип, естественно, тоже str
Методы (capitalize)
Изучить все доступные для работы со str методы можно вызвав функцию help с аргументом str
Рассмотрим метод capitalize
| capitalize(self, /) | Return a capitalized version of the string. | | More specifically, make the first character have upper case and the rest lower | case.
>>> c = «topBicycle.ru»
>>> c.capitalize()
Первая буква стала заглавной. Все остальные стали строчными.
capitalize() не изменят изначальную строку. Это можно проверить выполнив
Обрезать строку
# отрезать x символов с конца строки s
s[:- x ]
# отрезать y символов с начала строки s
s[ y :]
# обрезать и начало и конец
s[ y :- x ]
>>> url = «https://www.heihei.ru»
>>> a = url[:-3]
>>> a
>>> ‘https://www.heihei’
>>> b = a[12:]
>>> b
>>> ‘heihei’
>>> c = url[12:-3]
>>> c
>>> ‘heihei’
Unicode
Python поддерживает Unicode так как по дефолту в нём используется UTF-8
Это позволяет использовать юникод символы без заморочек
>>> «Pythonia voi käyttää myös vaativassa ja tieteellisessä»
‘Pythonia voi käyttää myös vaativassa ja tieteellisessä’
Если бы поддержки не было скорее всего пришлось бы заменять специальные символы, такие как умлауты, на из юникод представление
>>> «Pythonia voi k\u00e4ytt\u00e4\u00e4 my\u00f6s vaativassa ja tieteellisess\u00e4»
‘Pythonia voi käyttää myös vaativassa ja tieteellisessä’
Можно получить юникод символы и другими способами
string Module
Подключив библиотеку strig можно пользоваться готовыми наборами символов
whitespace = ‘ \t\n\r\v\f’
ascii_lowercase = ‘abcdefghijklmnopqrstuvwxyz’
ascii_uppercase = ‘ABCDEFGHIJKLMNOPQRSTUVWXYZ’
ascii_letters = ascii_lowercase + ascii_uppercase
digits = ‘0123456789’
hexdigits = digits + ‘abcdef’ + ‘ABCDEF’
octdigits = ‘01234567’
punctuation = r»»»!»#$%&'()*+,-./:; ?@[\]^_`
«»»
printable = digits + ascii_letters + punctuation + whitespace
Источник