Как убрать \n в функции readlines() Python?
Смотря что вы хотите. Можно сделать и так, чтобы не выводить никаких символов кроме тех, что были в файле:
Такой подход, в отличие от других ответов, ничего не убирает из строк, он просто не добавляет перевод строки при печати считанных из файла строк.
Как вариант, прочитать файл целиком в строку, потом разбить ее на отдельные строки с помощью метода splitlines (он не оставляет разделители строк, если не передать ему параметр keepends=True ):
Другой вариант (без предварительной загрузки файла целиком) — в процессе чтения к каждой строке применять rstrip(‘\n’) :
ну или более обычный и легче читаемый вариант:
![]()
Всё ещё ищете ответ? Посмотрите другие вопросы с метками python python-3.x или задайте свой вопрос.
Site design / logo © 2022 Stack Exchange Inc; user contributions licensed under cc by-sa. rev 2022.6.10.42345
Нажимая «Принять все файлы cookie», вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Как удалить \ n из элемента списка?
Я пытаюсь получить Python для чтения строки из файла .txt и записать элементы первой строки в список. Элементы в файле были разделены табуляцией, поэтому я использовал split(«\t») для разделения элементов. Поскольку в файле .txt много элементов, я сохранил найденные в каждой строке данные в отдельный список.
Проблема, которую я имею в настоящее время, состоит в том, что он показывает каждый список следующим образом:
Как я могу удалить \n из последнего элемента списка и сделать его просто ‘7.3’ ?
15 ответов
Если вы хотите удалить \n только из последнего элемента, используйте это:
Если вы хотите удалить \n из всех элементов, используйте это:
Вы также можете удалить \n перед разделением строки:
Вы могли бы сделать —
lines содержит все содержимое вашего файла.
Можно также использовать списки, чтобы сделать это более компактным.
У меня была эта проблема, и я решил ее, используя функцию chomp, описанную выше:
Вы получаете доступ к последнему элементу набора, а затем сохраняете значение в переменной.
Так что у тебя есть:
Тогда просто сделайте:
Который оставит вас с 7.3 . Затем сохраните это значение в последнем элементе набора.
Вы можете использовать lstrip() или rstrip() для удаления только левой или правой стороны.
Похоже, вы хотите что-то вроде функции Perl chomp() .
Это легко сделать в Python:
. при условии, что вы используете Python 2.6 или новее. В противном случае просто используйте более подробный:
Если вы хотите удалить все новые строки в конце строки (в нечетном случае, когда по какой-то причине может быть несколько завершающих строк новой строки):
Очевидно, что вы никогда не должны видеть такую строку, возвращаемую ни обычными методами файлового объекта Python readline() , ни readlines() методами.
Я видел, как люди слепо удаляли последние символы (используя нарезку s[:-1] ) из результатов файла readline() и подобных функций. Это плохая идея, потому что это может привести к ошибке в последней строке файла (в случае, когда файл заканчивается чем-либо, кроме новой строки).
Поначалу вы можете укрыться от ложного чувства безопасности, когда слепо снимаете последние символы со строк, которые вы прочитали. Если вы используете обычный текстовый редактор для создания файлов набора тестов, большинство из них автоматически добавят новую строку в конец последней строки. Чтобы создать действительный тестовый файл, используйте код что-то вроде:
. а затем, если вы снова откроете этот файл и воспользуетесь файловыми методами readline() или readlines() , вы обнаружите, что текст читается без завершающей строки.
Эта неспособность учесть текстовые файлы, заканчивающиеся не символами новой строки, преследует многие утилиты UNIX и языки сценариев в течение многих лет. Это глупая ошибка в углу, которая проникает в код достаточно часто, чтобы быть вредным организмом, но не настолько, чтобы люди могли извлечь из нее урок. Мы можем утверждать, что «текстовые» файлы без окончательного перевода строки являются «поврежденными» или нестандартными; и это может быть допустимо для некоторых спецификаций программирования.
Тем не менее, слишком легко игнорировать угловые случаи в нашем кодировании и заставить это невежество кусать людей, которые позже зависят от вашего кода. Как говорит моя жена: когда дело доходит до программирования . практикуйте безопасный гекс!
Как убрать символ новой строки (\n) при чтении строк из файла
При использовании file.readlines() получаем что-то вроде этого:
Если хочется поддерживать и Юникодные окончания строк, то можно str.splitlines() метод использовать:
Site design / logo © 2022 Stack Exchange Inc; user contributions licensed under cc by-sa. rev 2022.6.10.42345
Нажимая «Принять все файлы cookie», вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.