python - метод - Избавление от \ n при использовании.readlines()




метод readline python (8)

Вы можете использовать .rstrip('\n') чтобы удалить только строки из конца строки:

for i in contents:
    alist.append(i.rstrip('\n'))

Это оставляет все остальные пробелы неповрежденными. Если вас не интересуют пробелы в начале и конце ваших строк, то большой тяжелый молот называется .strip() .

Однако, поскольку вы читаете из файла и все равно втягиваете все в память, лучше использовать метод str.splitlines() ; это разделяет одну строку на разделителях строк и возвращает список строк без этих разделителей; используйте это в file.read() и не используйте file.readlines() :

alist = t.read().splitlines()

На этот вопрос уже есть ответ:

У меня есть .txt-файл со значениями в нем.

Значения перечислены следующим образом:

Value1
Value2
Value3
Value4

Моя цель - поместить значения в список. Когда я это сделаю, список выглядит следующим образом:

['Value1\n', 'Value2\n', ...]

\n не требуется.

Вот мой код:

t = open('filename.txt', 'r+w')
contents = t.readline()

alist = []

for i in contents:
    alist.append(i)

Недавно я использовал это для чтения всех строк из файла:

alist = open('maze.txt').read().split()

или вы можете использовать это для этой немного дополнительной дополнительной безопасности:

with f as open('maze.txt'):
    alist = f.read().split()

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


Самый простой способ сделать это - записать file.readline()[0:-1] Это будет читать все, кроме последнего символа, который является новой строкой.


У меня была та же проблема, и я нашел следующее решение очень эффективным. Я надеюсь, что это поможет вам или всем, кто хочет сделать то же самое.

Прежде всего, я бы начал с оператора «с», поскольку он обеспечивает правильное открытие / закрытие файла.

Он должен выглядеть примерно так:

with open("filename.txt", "r+") as f:
    contents = [x.strip() for x in f.readlines()]

Если вы хотите преобразовать эти строки (каждый элемент в списке содержимого - строка) в integer или float, вы можете сделать следующее:

contents = [float(contents[i]) for i in range(len(contents))]

Используйте int вместо float если вы хотите преобразовать в integer.

Это мой первый ответ в SO, поэтому извините, если он не в правильном форматировании.


Я бы сделал это:

alist = [line.rstrip() for line in open('filename.txt')]

или:

with open('filename.txt') as f:
    alist = [line.rstrip() for line in f]

Я использовал функцию полосы, чтобы избавиться от символа новой строки, поскольку разделенные строки бросали ошибки памяти на файл 4 gb.

Образец кода:

with open('C:\\aapl.csv','r') as apple:
    for apps in apple.readlines():
        print(apps.strip())

from string import rstrip

with open('bvc.txt') as f:
    alist = map(rstrip, f)

Nota Bene: rstrip() удаляет пробелы, то есть: \f , \n , \r , \t , \v , \x и пустое ,
но я предполагаю, что вас интересует только сохранение значимых символов в строках. Тогда простое map(strip, f) будет лучше соответствовать, удалив также пробелы заголовка.

Если вы действительно хотите исключить только символы NL \n и RF \r , выполните следующие действия:

with open('bvc.txt') as f:
    alist = f.read().splitlines()

splitlines () без переданного аргумента не сохраняет символы NL и RF (Windows записывает файлы с NLRF в конце строк, по крайней мере на моей машине), но сохраняет другие пробелы, в частности пробелы и вкладки.

,

with open('bvc.txt') as f:
    alist = f.read().splitlines(True)

имеет тот же эффект, что и

with open('bvc.txt') as f:
    alist = f.readlines()

то есть NL и RF сохраняются


with open('D:\\file.txt', 'r') as f1:
    lines = f1.readlines()
lines = [s[:-1] for s in lines]




readline