Рубрики
Без рубрики

Как прочитать файл без новых линий в Python?

https://youtu.be/x6bvs2efbz4 Новая линия используется для отмены конца строки и начала нового, и в этой статье мы собираемся посмотреть, как прочитать файл в Python без этих новых перерывов. Для начала мы собираемся создать простой файл .txt. После каждой строки … Как прочитать файл без новых линий в Python? Читать далее “

Автор оригинала: Rikesh Nichani.

Newline используется для отмены конца строки и начала нового, и в этой статье мы собираемся посмотреть, как прочитать файл в Python без этих новых перерывов.

Для начала мы собираемся создать простой .txt файл. После каждой строки текста нажата клавиша ENTER/RETURN на клавиатуре – создавая новую строку в самой файле. Это отображается только для иллюстраций только, явно со словами (возвратом) ниже, которые мы сохраняем в файле под названием newline.txt :

newline.txt:Hello(return)
my(return)
name(return)
is(return)
Rikesh.(return)

Фон: открытие и чтение файла

Теперь, когда у нас есть наши основные .txt Файл, давайте начнем с помощью того, что происходит, когда мы открываем и прочитаем файл. Когда мы открываем файл в Python, мы можем прочитать его, передавая 'R' Параметр в нашем открыть утверждение. Самый простой способ открытия и Чтение файла составляет:

file= open("newline.txt", "r")
file.read()
# 'Hello\nmy\nname\nis\nRikesh.\n'

Используя этот метод, мы видим, что новая линия прочитана Python и представлена '\ N' персонаж. Это \ N Специальный персонаж Python для новой строки.

Очень более чистый способ открытия файлов в Python использует «С открытым» Заявление, так как это автоматически закроет файл после завершения. Мы собираемся продолжать читать файл, используя 'R' Параметр и запустите Печать Заявление о приведении нашего выхода:

with open("newline.txt", "r") as file: 
    line = file.read()
    print(file)


Выход:

Hello
 my
 name
 is
 Rikesh.

В то время как он может появиться отличаться от предыдущего примера, используя наше оператор печати, мы только что попросили Python реализовать код новой строки. Эффективно, наш выход выглядит так:

Hello\nmy\n
name\n
is\n
Rikesh.\n

Метод 1: расщепление с разделенными () и разделением (‘\ n’)

Сплитлины () это метод Python, который разбивается строка в Список , где каждая строка является элементом списка. По умолчанию этот метод расщепляет линию на перерыве Newline:

with open("newline.txt", "r") as file: 
    line=file.read().splitlines()
    print(line)

# ['Hello', 'my', 'name', 'is', 'Rikesh.']

Сплит () Метод Python Effective делает то же самое, но мы можем указать сепаратор, то есть, в какой момент мы желаем раскол, чтобы иметь место. В нашем примере это было бы в \ N Персонаж, который, как мы увидели, это представление Python ряд новой строки:

with open("newline.txt", "r") as file: 
    line=file.read().split("\n")
    print(line)

# ['Hello', 'my', 'name', 'is', 'Rikesh.']

В то время как оба этих метода удаляют новые линии, по умолчанию каждая из наших оригинальных строк текста была возвращена как отдельный элемент в списке. Это, очевидно, имеет ограниченную функциональность, если наш исходный файл не содержал отдельных строковых элементов, которые мы хотели поддерживать отдельные в первую очередь – например, список номеров. В нашем примере с чистым текстовым файлом вывод менее полезен.

Способ 2: зачистка с полоской () и RSTRIP ()

В Python полоса () Способ используется для удаления пробелов в начале (ведущем) и конце (трейлинг) строки. По умолчанию это не только включает в себя белые пробелы, но новые символы новой строки. Это было бы лучше проиллюстрировано некоторыми небольшими изменениями в нашем оригинальном файле:

newline_space.txt:  Hello (return)
   my     (return)
name (return)
is(return)
   Rikesh.    (return)

Хотя фактический текст такой же, мы добавили некоторые пробелы до и после наших текстовых записей. Окончательная вещь, которую следует отметить с этим методом, так это то, что, как он работает через наш файл в строке по строковой основе, нам нужно повторить наш файл для обеспечения полоса () применяется к каждой строке:

with open("newline_space.txt", "r") as file: 
    newline_breaks=""
    for line in file: 
        stripped_line = line.strip()
        newline_breaks += stripped_line
    print(newline_breaks)

# HellomynameisRikesh.

Как мы можем видеть, полоса () Метод не только избавился от новой строки, но и все ведущие и конечные пробелы также. Хотя это может быть полезной особенностью, что если мы хотели сохранить пробелы и просто избавиться от нового персонажа? Ну, мы можем сделать это, проходя \ N Как параметр в нашем Сплит () Метод:

with open("newline_space.txt", "r") as file: 
    newline_breaks=""
    for line in file: 
        stripped_line = line.strip('\n')
        newline_breaks += stripped_line
    print(newline_breaks)

# Hello    my     name is   Rikesh.  

Хотя полоса () Способ влияет как на промежуточные, так и ведущие пробелы, которые мы можем использовать RSTRIP () Чтобы удалить только конечные символы I.E., те, кто в конце строки. Поскольку новенькие перерывы имеют тенденцию быть в конце строки, этот метод предпочтительнее lstrip () который только влияет на персонажи в начале строки. Еще раз, мы можем пройти \ N Параметр, чтобы убедиться, что мы удаляем только новые символы Newline:

with open("newline_space.txt", "r") as file: 
    newline_breaks=""
    for line in file: 
        stripped_line = line.rstrip('\n')
        newline_breaks += stripped_line
    print(newline_breaks)

 Hello    my     name is   Rikesh.   

Способ 3: нарезка

Еще один способ удалить новую линию by нарезка Однако следует отметить, что это следует использовать с особой осторожностью, поскольку оно меньше, чем наши другие методы. С нарезкой мы можем попросить Python удалить последний символ каждой строки через Отрицательное нарезка [: -1] Отказ Как с полоса () Мы должны повторять наш файл:

with open("newline.txt", "r") as file: 
    newline_breaks=""
    for line in file: 
        stripped_line = line[:-1]
        newline_breaks += stripped_line
    print(newline_breaks)

# HellomynameisRikesh.

Однако, пожалуйста, имейте в виду, что нарезка неизбиралась – это все равно, что последний символ, и мы не можем указать это. Итак, хотя он работает, когда наш оригинальный файл согласуется и имеет все новые перерывы в нужных местах, что произойдет, если это не так? Давайте изменим наш оригинальный файл, чтобы сделать его менее последовательным, и, как будто подобный вид реального файла, который мы, вероятно, будем иметь дело с:

newline_slice.txt:Hello(return)
my(return)
name(return)
is(return)
Rikesh

В этом файле полная остановка и возвращение в конце последней строки были удалены, поэтому последний символ для этого скрипта IS 'h' Отказ Важно отметить, что после этого персонажа нет пробелов и не возвращается. Теперь, если мы попробуем нарезать этот файл:

with open("newline_slice.txt", "r") as file: 
    newline_breaks=""
    for line in file: 
        stripped_line = line[:-1]
        newline_breaks += stripped_line
    print(newline_breaks)

# HellomynameisRikes

Выход нарезал (отрубленный) последний символ моего имени. Поэтому мы должны быть уверены в целостности и форматировании нашего исходного файла, прежде чем мы сможем использовать этот метод, в противном случае мы рискуем потерять данные.

Метод 4: заменить

Окончательный метод мы будем смотреть на заменить () Отказ Как следует из названия, мы можем использовать это, чтобы заменить определенную фразу в нашей строке с другой конкретной фразу. Поскольку мы ожидаем, что новенький перерыв будет использоваться, когда в нашем тексте есть какой-то логический перерыв, очевидный выбор будет заменять его пробелом, который мы можем сделать с "" Отказ Этот метод также требует, чтобы мы проиграли на нашем файле:

with open("newline.txt", "r") as file: 
    newline_breaks = ""
    for line in file: 
        stripped_line = line.replace('\n', " ")
        newline_breaks += stripped_line
    print(newline_breaks)

# Hello my name is Rikesh.

Хотя это дало нам наиболее чисто отформатированное из всех наших примеров, это только из-за форматирования нашего исходного файла. Тем не менее, заменить () У него есть гибкость, чтобы разрешить замену символов новой строки на любой конкретный файл наиболее подходит для нашего конкретного файла.

Резюме

Мы видели ряд различных методов для чтения файла без новых линий. Каждый эффективен в своем собственном пути и делает работу с удовольствием наших новых линий, поэтому нет правильного ответа. Правильный метод будет зависеть от исходного файла, который мы работаем, как с точки зрения контента (простой текст, целые числа), так и форматирование (пробелы, консистенция).

Если вам нужно держать элементы разделенные, разделение может быть лучшим вариантом. Если вам нужно объединить вывод замены или зачистки может быть ответом. Первое открытие и чтение файла, без какого-либо форматирования для оценки содержимого файла и структуры, будет наиболее важным шагом в решении, какой метод наиболее соответствует вашим потребностям.