Как убрать \n в функции readlines() Python?
Смотря что вы хотите. Можно сделать и так, чтобы не выводить никаких символов кроме тех, что были в файле:
with open('file.txt', 'r') as file: for line in file.readlines(): print(line, end='')
Такой подход, в отличие от других ответов, ничего не убирает из строк, он просто не добавляет перевод строки при печати считанных из файла строк.
Отслеживать
ответ дан 22 янв 2020 в 15:29
69.4k 5 5 золотых знаков 20 20 серебряных знаков 51 51 бронзовый знак
print(line)
print(line[:-1:])
print(line.rstrip('\n'))
Отслеживать
ответ дан 22 янв 2020 в 15:26
123k 24 24 золотых знака 126 126 серебряных знаков 303 303 бронзовых знака
Недостаток: если сверху идет пустая строка, то она остается.
22 янв 2020 в 15:28
@VictorsaysReinstateMonica, пустая строка и должна оставаться. А я вот про другой косяк подумал — если файл не заканчивается переводом строки, то ничего лишнего не отрежется?
22 янв 2020 в 15:29
во втором варианте есть проблема с системами с переводом строки по \r\n
22 янв 2020 в 16:05
@eri, а питон сам не заменяет в текстовом режиме как си?
22 янв 2020 в 16:06
@Qwertiy Думаю, @eri намекает на то, что лучше использовать line.rstrip() .
23 янв 2020 в 5:05
Как вариант, прочитать файл целиком в строку, потом разбить ее на отдельные строки с помощью метода splitlines (он не оставляет разделители строк, если не передать ему параметр keepends=True ):
with open('file.txt', 'r') as file: for line in file.read().splitlines(): print(line)
Другой вариант (без предварительной загрузки файла целиком) — в процессе чтения к каждой строке применять rstrip(‘\n’) :
with open('file.txt', 'r') as file: for line in map(lambda line: line.rstrip('\n'), file): print(line)
ну или более обычный и легче читаемый вариант:
with open('file.txt', 'r') as file: for line in file: line = line.rstrip('\n') print(line)
Как убрать символ в конце строки?
__NV__: 1
name: «name»
short_name: «name»
line1: 0
line2: «#updated 20/9/21,\n4845905. \n4845956. \n#magaz,\n4872710. \n#nano,\n4872717. »
line3: «00000*»
line4: 0
line5: «»
line6: 1
line7: 0
line8: «»
line9: 0
Сам скрипт, который парсит файл ниже:
#!/usr/bin/python3 import os os.system(r' >info_ran') prefix = '#' for filename in os.listdir("/home/user/ran_info/ran-09"): file1 = open("/home/user/ran_info/ran-09/" + filename, "r") lines = file1.readlines() for line in lines: if "name:" in line and "short_name" not in line: with open('info_ran, mode='a+') as f: f.write(line + '\n') if "line2:" in line: for i in line.split("\\n"): if "line2" not in i: if not i.startswith(prefix): with open('info_ran', mode='a+') as f: f.write(i + '\n')
После выполнения скрипта, последняя строка записывается как 872717. «.
Как можно убрать символ в последней строке » ?
Пробовал варианты с f.write(i.strip(‘»‘) + ‘\n’), f.write(i.rstrip(‘»‘ + ‘\n’) — не помогает.
- Вопрос задан более двух лет назад
- 68 просмотров
1 комментарий
Простой 1 комментарий
Python-сообщество
![]()
- Начало
- » Python для новичков
- » Удалить символ переноса строки
#1 Июнь 18, 2012 00:16:23
Serbis От: Зарегистрирован: 2012-02-13 Сообщения: 38 Репутация: 0 Профиль Отправить e-mail
Удалить символ переноса строки
Совершенно идиотский вопрос. Из файла readlines выбирает все строки, но после каждой ставит \n. Так как это служебный символ replace(r’\n’, ») ничего не дает, злополучный перевод строки остается на своем месте. Как блин его удалить?
[‘\xd0\x9c\xd0\xb8\xd0\xbb\xd0\xbb\xd0\xb8\xd0\xbc\xd0\xb5\xd1\x82\xd1\x80 — 003\n‘, ‘\xd0\xa1\xd0\xb0\xd0\xbd\xd1\x82\xd0\xb8\xd0\xbc\xd0\xb5\xd1\x82\xd1\x80 — 004\n‘, ‘\xd0\x94\xd0\xb5\xd1\x86\xd0\xb8\xd0\xbc\xd0\xb5\xd1\x82\xd1\x80 — 005\n‘, ‘\xd0\x9c\xd0\xb5\xd1\x82\xd1\x80 — 006\n‘, ‘\xd0\x9a\xd0\xb2\xd0\xb0\xd0\xb4\xd1\x80\xd0\xb0\xd1\x82\xd0\xbd\xd1\x8b\xd0\xb9 \xd0\xbc\xd0\xb8\xd0\xbb\xd0\xbb\xd0\xb8\xd0\xbc\xd0\xb5\xd1\x82\xd1\x80 — 050\n‘, ‘\xd0\x9a\xd0\xb2\xd0\xb0\xd0\xb4\xd1\x80\xd0\xb0\xd1\x82\xd0\xbd\xd1\x8b\xd0\xb9 \xd1\x81\xd0\xb0\xd0\xbd\xd1\x82\xd0\xb8\xd0\xbc\xd0\xb5\xd1\x82\xd1\x80 — 051\n‘, ‘\xd0\x9a\xd0\xb2\xd0\xb0\xd0\xb4\xd1\x80\xd0\xb0\xd1\x82\xd0\xbd\xd1\x8b\xd0\xb9 \xd0\xb4\xd0\xb5\xd1\x86\xd0\xb8\xd0\xbc\xd0\xb5\xd1\x82\xd1\x80 — 053\n‘ ну и т. д.
#2 Июнь 18, 2012 00:24:40
fata1ex От: Зарегистрирован: 2009-07-11 Сообщения: 732 Репутация: 52 Профиль Отправить e-mail
Удалить символ переноса строки
[01:23] home:~/dev cat in
1
2
3
4
5
6
>>> map(lambda s: s.replace('\n', ''), open('in', 'r').readlines()) ['1', '2', '3', '4', '5', '6']
>>> map(lambda s: s[:-1], open('in', 'r').readlines()) ['1', '2', '3', '4', '5', '6']
>>> map(lambda s: s.rstrip(), open('in', 'r').readlines()) ['1', '2', '3', '4', '5', '6']
Отредактировано fata1ex (Июнь 18, 2012 00:26:52)
#3 Июнь 18, 2012 01:10:36
py.user.next От: Зарегистрирован: 2010-04-29 Сообщения: 9675 Репутация: 841 Профиль Отправить e-mail
Удалить символ переноса строки
>>> with open('/etc/passwd') as fin: . lines = fin.read().splitlines() . >>> lines[:3] ['root:x:0:0:root:/root:/bin/bash', 'bin:x:1:1:bin:/bin:/sbin/nologin', 'daemon:x:2:2:daemon:/sbin:/sbin/nologin'] >>>
#4 Июль 1, 2012 04:34:39
odnochlen Зарегистрирован: 2012-06-28 Сообщения: 794 Репутация: 14 Профиль Отправить e-mail
Удалить символ переноса строки
Serbis
Так как это служебный символ replace(r’\n’, ») ничего не дает,

Коллективный тупняк?
replace('\n', '')
Пожалуйста, помогите, я с ума схожу, как убрать из подсчета символов \n? И пробелы убрать при выводе
Please help, I’m going crazy, how can I remove \ n from the character count? And remove spaces in the output file = open(«/usercode/files/books.txt», «r») lines = file.readlines() for line in lines: print (line[0],(len(line))-1) file.close()
26th Oct 2020, 10:45 AM
Elena Varvarchuk
To remove space between printed values use sep=»». Like this: print(line[0],len(line)-1,sep=»») If you are not sure that the last element is always ‘\n’, you can just remove the trailing ‘\n’ : line=line.rstrip(‘\n’) print(line[0],len(line), sep=»»)
26th Oct 2020, 1:50 PM
Volodymyr Chelnokov
Thank you. Is work.
28th Oct 2020, 6:32 PM
Elena Varvarchuk
When you use a comma in a print statement, it’s replaced by a space. Use a ‘+’ as in: for line in lines: print(line[0] + (len(line) — 1))
26th Oct 2020, 11:28 AM
This + not work
26th Oct 2020, 11:31 AM
Elena Varvarchuk
right, because its a number. add the string of the length of the line minus 1
26th Oct 2020, 11:32 AM
Тут я хэр знает, я по Html
26th Oct 2020, 10:46 AM
Often have questions like this?
Learn more efficiently, for free: