В Python вызов, например, temp = open(filename,'r').readlines() приводит к созданию списка, в котором каждый элемент представляет собой строку из файла. Однако в конце этих строк есть символ перевода строки, который мне не нужен.
Как я могу получить данные без перевода строк?
Переведено автоматически
Ответ 1
Вы можете прочитать файл целиком и разделить строки с помощью str.splitlines:
temp = file.read().splitlines()
Или вы можете удалить перевод строки вручную:
temp = [line[:-1] for line in file]
Примечание: это последнее решение работает только в том случае, если файл заканчивается переводом строки, в противном случае в последней строке будет потерян символ.
Это предположение верно в большинстве случаев (особенно для файлов, созданных текстовыми редакторами, которые часто все равно добавляют завершающий символ новой строки).
Если вы хотите избежать этого, вы можете добавить перевод строки в конец файла:
withopen(the_file, 'r+') as f: f.seek(-1, 2) # go at the end of the file if f.read(1) != '\n': # add missing newline if not already present f.write('\n') f.flush() f.seek(0) lines = [line[:-1] for line in f]
Или более простой альтернативой является strip перевод строки вместо:
[line.rstrip('\n') for line in file]
Или даже, хотя и довольно нечитаемый:
[line[:-(line[-1] == '\n') orlen(line)+1] for line in file]
Который использует тот факт, что возвращаемое значение or является не логическим значением, а объектом, который был оценен как true или false .
Метод readlines фактически эквивалентен:
defreadlines(self): lines = [] for line initer(self.readline, ''): lines.append(line) return lines
Поскольку readline() перевод строки также readlines() сохраняется, он сохраняется.
Примечание: для симметрии к readlines() методwritelines()не добавляет конечные переводы строк, поэтому f2.writelines(f.readlines()) создает точную копию f in f2.
Ответ 2
temp = open(filename,'r').read().split('\n')
Ответ 3
Reading file one row at the time. Removing unwanted chars from end of the string with str.rstrip(chars).
withopen(filename, 'r') as fileobj: for row in fileobj: print(row.rstrip('\n'))
See also str.strip([chars]) and str.lstrip([chars]).
Ответ 4
I think this is the best option.
temp = [line.strip() for line in file.readlines()]