python — Pygame не понимает символ переноса строки \n
Сделал скрипт для pygame, чтобы строка переносилась, если количество символов в строке делится по модулю на end (максимальное количество символов на строку):
def print_text(message, x, y, end=0, font_color=(255, 255, 255), font_type='media/FiraSans-Italic.ttf', font_size=30): pygame.font.init() if end > 1: words = [] for i in message: words.append(i) if len(words) % end == 0: words.append("\n") message = "".join(words) print(message) font_type = pygame.font.Font(font_type, font_size) text = font_type.render(message, True, font_color) screen.blit(text, (x, y))
Но на выходе получаю вместо переноса строки только этот символ — ⍰
, на месте вставляемого "\n"
- python
- строки
- pygame
4
def text(x, y, color, size, text, w): a = {} n = int(((w - x)/size)/0.45) k = int((len(text)//n)) font = pg.font.Font(None, size) for i in range(0, k + 1): f = str() if i == 0: for m in range(0, len(text)): if m < n: f += text[m] else: for m in range(n * i, len(text) - (k * i)): if m < (n*(i + 1)): f += text[m] text1 = font.render(f, True, color) sc.blit(text1, (x, y)) y += (0.5 * size) pg.display.update()
Новый участник
Артем Батанин — новый участник сайта. Будьте снисходительны, задавая уточняющие вопросы, комментируя и отвечая. Почитайте про нормы поведения.
1
решил вопрос, изменив функцию print_text()
def print_text(message, x, y, end=0, font_color=(255, 255, 255), font_type='media/FiraSans-Italic. ttf', font_size=30): pygame.font.init() font_type = pygame.font.Font(font_type, font_size) text = font_type.render(message, True, font_color) if end > 1: words = [] for i in message: words.append(i) if len(words) % end == 0: words.append('-') message = "".join(words) list_words = message.split('-') list_length = len(list_words) for i in range(0, list_length): j = i + 1 y_i = y * j list_text = font_type.render(list_words[i], True, font_color) screen.blit(list_text, (x, y_i)) else: screen.blit(text, (x, y))
Зарегистрируйтесь или войдите
Регистрация через Google
Регистрация через Facebook
Регистрация через почту
Отправить без регистрации
Почта
Необходима, но никому не показывается
Отправить без регистрации
Почта
Необходима, но никому не показывается
Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки
python — Поиск символа «\n» в байтовой строке через input()
Задать вопрос
Вопрос задан
Изменён 3 года 4 месяца назад
Просмотрен 1k раз
Ребята.
Не могу понять, как через input()
передать функции для поиска в байтовой строке символ \n
.
После того, как переменная принимает значение из input()
, она ведь имеет тип str
? Но если я введу через эту функцию символ
, то это будет два символа?
Ребята, как правильно принять значение через input()
, чтобы искать символ переноса строки в тексте?
==========================================================================
#coding: utf-8 megatext_str = ''' - Знатоки подскажите как из строки типа "Привет" получить "\u0441\u043b\u0443\u0445\u0438"? - На c это делается так: if (str == "Привет") str = "\u0441\u043b\u0443\u0445\u0438" ''' megatext_bytes = bytes(megatext_str,encoding='utf-8') def check_text_func(megatext_bytes): '''Функция проверки определенной искомой семиотической комбинации''' arg1_str = input('Что ищем? ') arg1_bytes = bytes(arg1_str,encoding='utf-8') if arg1_bytes in megatext_bytes: print('Found') else: print('Didn\'t found') check_text_func(megatext)
- python
- python-3. x
- byte
В Питоне 3, input()
не работает с байтовыми строками (bytes
), эта функция возвращает текст (str
—Unicode строка).
input()
читает ровно одну строку из стандартного ввода. '\n'
символ это перевод строки (один символ)—он никогда не встретится в строке, возвращаемой input()
. Если input()
вызов вернулся, то либо '\n'
встретился во вводе, либо EOF (конец ввода).
Чтобы прочитать несколько строк сразу до конца ввода, можно использовать:
import sys text = sys.stdin.read()
Чтобы проверить, есть ли '\n'
во введённом тексте: '\n' in text
.
Зарегистрируйтесь или войдите
Регистрация через Facebook
Регистрация через почту
Отправить без регистрации
Почта
Необходима, но никому не показывается
Отправить без регистрации
Почта
Необходима, но никому не показывается
Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки
Python New Line: Как добавить новую строку | Flexiple Tutorials
В этом коротком руководстве мы рассмотрим, как добавить новую строку Python. Мы рассмотрим символ новой строки Python и то, как можно использовать другие методы.
Содержание — Новая строка Python:
- Новая строка Python
- Символ новой строки в Python
- Многострочная строка
- Заключительные мысли — новая строка Python
Новая строка Python:
В программировании общепринятой практикой является разрыв строк и отображение содержимого в новой строке. Это улучшает читаемость вывода. Кроме того, вы часто будете сталкиваться с символом новой строки при работе с файлами.
Следовательно, очень важно, чтобы вы поняли, как добавить новую строку, и ознакомились с тем, как работает символ новой строки. Этот учебник направлен на то, чтобы сделать то же самое.
Символ новой строки в Python:
В Python символ новой строки «\n» используется для создания новой строки. При вставке в строку все символы после символа добавляются в новую строку. По сути, появление «\n» указывает на то, что строка заканчивается здесь, а оставшиеся символы будут отображаться в новой строке.
Код и объяснение:
str_1 = "Наймите лучших\n1% внештатных разработчиков" печать (str_1) ‘’’Выход – нанять лучших 1% разработчиков-фрилансеров».
Как упоминалось выше, символ после символа новой строки печатается в новой строке.
Различные способы реализации этого включают либо непосредственное добавление в строку, либо объединение перед печатью.
Обычный вопрос, который возникает у новичков при изучении того, как применять новую строку, — поскольку мы добавляем ее в строку — почему Python не печатает «\n» как есть? И как он узнает, что нужно добавить новую строку?
Обратная косая черта («\») в символе новой строки называется управляющей последовательностью. Escape-последовательности используются для добавления в строку чего-либо недопустимого. Таким образом, Python понимает, что следующий символ не является частью строки, и выполняет его.
Многострочные строки:
Многострочные строки — еще один простой способ печати текста в новой строке. Как следует из названия, сама строка занимает несколько строк. Эти строки могут быть назначены с использованием либо 3 двойных кавычек, либо 3 одинарных кавычек. Python понимает, что строка является многострочной, и печатает ее как таковую.
Код и объяснение:
str_1 = """Нанять лучших 1% фрилансер Разработчики""" печать (str_1) '''Выход - наймите лучших 1% фрилансер Разработчики'''
В приведенном выше примере строка выводится так же, как и информация.
Заключительные мысли — новая строка Python:
Хотя в Python можно использовать оба метода для добавления новых строк, я бы рекомендовал использовать первый метод, поскольку он является наиболее распространенным. Кроме того, учитывая, что Python имеет встроенный символ, который облегчает это, лучше всего использовать его.
Однако, пожалуйста, не стесняйтесь изучить и понять, как работает многострочный метод.
python — Как указать новые строки в строке, чтобы записать несколько строк в файл?
спросил
Изменено 2 месяца назад
Просмотрено 2,5 млн раз
Как я могу указать новую строку в строке в Python, чтобы я мог записать несколько строк в текстовый файл?
- python
- разрывы строк
- запись файлов
2
Это зависит от того, насколько корректным вы хотите быть. \n Обычно достаточно
os
. (На самом деле он называется , строка 9.0075 .) Примечание: при записи в файлы с помощью Python API не используйте os.linesep
. Просто используйте \n
; Python автоматически преобразует это в правильный символ новой строки для вашей платформы.
3
Символ новой строки \n
. Он используется внутри строки.
Пример:
print('Первая строка \n Вторая строка')
где \n
— символ новой строки.
Это даст результат:
Первая строка
Вторая линия
Если вы используете Python 2, вы не используете круглые скобки в функции печати.
0
Вы можете писать новые строки отдельно или в одной строке, что проще.
Ввод
строка 1 = "привет, как дела"
line2 = "Я тестирую новую управляющую последовательность строк"
line3 = "Кажется, это работает"
Вы можете написать '\n' отдельно:
файл.запись(строка1)
файл.записать("\n")
файл.запись(строка2)
файл.записать("\n")
файл.запись (строка 3)
файл.записать("\n")
Вывод
привет как дела
Я тестирую новую escape-последовательность строк
это похоже на работу
Ввод
Как уже указывалось в предыдущих ответах, поместите \n в соответствующие точки вашей строки:
line = "привет, как дела\nЯ тестирую новую escape-последовательность строк\nэто, кажется, работает "
файл.запись(строка)
Выход
привет как дела
Я тестирую новую escape-последовательность строк
это похоже на работу
0
Независимый от платформы выключатель линии: Linux, Windows и iOS
import os
ключевое слово = «физический» + os. linesep + «дистанцирование»
печать (ключевое слово)
Выход:
физический
дистанцирование
0
Вот более читаемое решение, которое будет работать правильно, даже если вы не находитесь на верхнем уровне отступа (например, в определении функции).
импортировать текстовую обертку
file.write(textwrap.dedent("""
Жизнь всего лишь ходячая тень, плохой игрок
Это расхаживает и беспокоит свой час на сцене
И больше не слышно: это сказка
Рассказанный идиотом, полный шума и ярости,
Ничего не означающее.
"""))
0
Если вы вызовете только print
без каких-либо аргументов, будет выведена пустая строка.
печать
Вы можете направить вывод в такой файл (учитывая ваш пример):
f = открыть('out.txt', 'w')
напечатать 'Первая строка' >> f
печать >> ф
напечатать 'Вторая строка' >> f
е. закрыть()
Мало того, что он не зависит от ОС (даже без использования пакета os
), он также более удобочитаем, чем размещение \n
в строках.
Функция print()
имеет необязательный аргумент ключевого слова для конца строки, называемый end
, который по умолчанию соответствует символу новой строки ОС, например. \n
. Итак, когда вы звоните print('hello')
, Python на самом деле печатает 'hello' + '\n'
. Это означает, что когда вы вызываете просто print
без каких-либо аргументов, на самом деле печатается '' + '\n'
, что приводит к новой строке.
Использовать многострочные строки.
с = """Первая строка
Вторая линия
Третья строка"""
f = открыть('out.txt', 'w')
вывести с >> ф
е.закрыть()
0
В Python вы можете просто использовать символ новой строки, т. е. \n
0
Как упоминалось в других ответах: «Новый символ строки - \n. Он используется внутри строки».
Я обнаружил, что самый простой и читаемый способ — использовать функцию «формат», используя nl в качестве имени для новой строки, и разбивать строку, которую вы хотите напечатать, в точном формате, в котором вы собираетесь ее печатать:
Python 2:
печать("строка1{nl}"
"строка2{nl}"
"line3".format(nl="\n"))
Python 3:
nl = "\n"
печать (f "строка1 {nl}"
f"строка2{nl}"
f"строка3")
Будет выведено:
строка1
строка2
строка3
Таким образом, он выполняет задачу, а также обеспечивает высокую читабельность кода 🙂
То же самое и с '\n'
, хотя '\r'
вам, скорее всего, не понадобится. Есть ли причина, по которой он у вас есть в вашей версии Java? Если вам это нужно/хотите, вы можете использовать его таким же образом и в Python.
0
Стоит отметить, что когда вы проверяете строку с помощью интерактивной оболочки Python или Jupyter Notebook, \n
и другие строки с обратной косой чертой, такие как \t
, отображаются как буквально :
>>> gotcha = ' Вот какое-то случайное сообщение...
>>> Gotcha += '\nДополнительный контент:\n\t{}'.format('Еще больше интересного!')
>>> попался
'Вот какое-то случайное сообщение...\nДополнительный контент:\n\tЕщё больше отличных вещей!'
Новые строки, символы табуляции и другие специальные непечатаемые символы отображаются как пробелы только при печати или при записи в файл:
>>> print('{}'.format(gotcha))
Вот случайное сообщение...
Дополнительный контент:
Но еще больше замечательных вещей!
Большинство escape-символов в строковых литералах из Java также допустимы в Python, например "\r" и "\n".
0
\n - работает простая вставка символа новой строки:
# Вот тестовый пример — строка с символом новой строки:
В [36]: test_line = "Привет!!!\n проверка первой строки. . \n проверка второй строки.. \n и третья строка....."
Вывод:
В [37]: print(test_line)
Привет!!!
тестирую первую строчку..
тестирую вторую строчку..
и третья строчка.....
В Python 3 язык заботится о кодировании новых строк для вас в собственном представлении платформы. Это означает \r\n
в Windows и просто \n
во взрослых системах.
Даже в системах U*x чтение файла с окончаниями строк Windows в текстовом режиме возвращает правильные результаты для текста, т. е. любые \r
символов до \n
символов молча отбрасываются.
Если вам нужен полный контроль над байтами в файле, вы можете использовать двоичный режим. Тогда каждый байт соответствует ровно одному байту, и Python не выполняет преобразования.
>>> # Записать файл с разными окончаниями строк, используя бинарный режим для полного контроля
>>> с open('/tmp/demo.txt', 'wb') как wf:
... wf.write(b'строка DOS\r\n')
... wf. write(b'U*x строка\n')
... wf.write(b'без строки')
10
97
>>> # Прочитать файл как текст
>>> с open('/tmp/demo.txt', 'r') в виде текста:
... для строки в тексте:
... печать (строка, конец = '')
DOS-линия
линия U*x
нет линии
>>> # Или более наглядно
>>> с open('/tmp/demo.txt', 'r') в виде текста:
... для строки в тексте:
... печать (представление (строка))
'Строка DOS\n'
'U*x строка\n'
'нет линии'
>>> # Назад к байтам!
>>> с open('/tmp/demo.txt', 'rb') как двоичный файл:
... для строки в двоичном формате:
... печать (строка)
b'строка DOS\r\n'
b'U*x линия\n'
б'нет линии'
>>> # Открыть в двоичном формате, но преобразовать обратно в текст
>>> с open('/tmp/demo.txt', 'rb') как двоичный файл:
... для строки в двоичном формате:
... печать (line.decode ('utf-8'), конец = '')
DOS-линия
линия U*x
нет линии
>>> # Или еще раз подробнее, с repr()
>>> с open('/tmp/demo.txt', 'rb') как двоичный файл:
... для строки в двоичном формате:
... print(repr(line.decode('utf-8')))
'Строка DOS\r\n'
'U*x строка\n'
'нет линии'
Использовать:
"{}\n{}\n{}". format(
"линия 1",
"линия2",
"линия3"
)
Лично я предпочитаю этот формат.
\n разделяет строки строки. В следующем примере я продолжаю писать записи в цикле. Каждая запись разделена \n
.
f = открыть ("jsonFile.txt", "w")
для row_index в диапазоне (2, лист.nrows):
mydict1 = {
"PowerMeterId": row_index + 1,
«Сервис»: «Электричество»,
«Здание»: «JTC FoodHub»,
"Этаж": ул(Этаж),
«Местоположение»: местоположение,
"ReportType": "Электричество",
«Система»: Система,
"Подсистема": "",
"Входящий": "",
"Категория": "",
"ОтображаемоеИмя": ОтображаемоеИмя,
"Описание": Описание,
«Тег»: тег,
«Активен»: 1,
"DataProviderType": интервал (0),
"Таблица данных": ""
}
mydict1.pop("_id", нет)
f.write(str(mydict1) + '\n')
е.закрыть()
Различные эквивалентные методы
Использование
print
print
уже по умолчанию добавляет новую строку!
с открытым ("out. txt", "w") как f:
печать("Первый", файл=f)
печать("Второй", файл=f)
Эквивалентно:
с open("out.txt", "w") как f:
print("Первый\nВторой", файл=f)
Чтобы напечатать
без автоматического добавления новой строки, используйте sep=""
(поскольку sep="\n"
используется по умолчанию):
с open("out.txt", "w") как f:
print("Первый\nВторой\n", sep="", файл=f)
Использование
f.write
Для файлов, открытых в текстовом режиме:
с open("out.txt", "w") as f:
f.write("Первый\nВторой\n")
Для файлов, открытых в двоичном режиме, файлы будут записаны без автоматического преобразования \n
в разделитель строки для конкретной платформы. Чтобы принудительно использовать символ новой строки для текущей платформы, используйте os.linesep
вместо \n
:
с open("out.txt", "wb") as f:
f.