kzen.dev
  • Вопросы
  • Метки
  • Пользователи
Оповещения
Вознаграждения
Регистрация
После регистрации, сможете получать уведомления об ответах и комментариях на Ваши вопросы.
Вход
Если у Вас уже есть аккаунт, войдите чтобы проверить новые уведомления.
Тут будут вознаграждения за добавленные вопросы, ответы и комментарий.
Дополнительно
Источник
Редактировать
 Yotam
Yotam
Вопрос

чтение файла без новых строк в Python

В Python вызов

temp = open(filename,'r').readlines()

приводит к получению списка, в котором каждый элемент является строкой в файле. Это немного глупо, но все же: readlines() также записывает символ новой строки в каждый элемент, чего я не хочу.

Как я могу избежать этого?

316 2012-09-08T11:55:15+00:00 10
 ivanleoncz
ivanleoncz
Редактировал вопрос 26-го июля 2019 в 10:34
Программирование
python
line-breaks
readlines
Решение / Ответ
 Bakuriu
Bakuriu
8-го сентября 2012 в 11:57
2012-09-08T11:57:07+00:00
Дополнительно
Источник
Редактировать
#17157183

Вы можете прочитать весь файл и разделить строки, используя str.splitlines:

temp = file.read().splitlines()

Или вы можете удалить новую строку вручную:

temp = [line[:-1] for line in file]

Примечание: это последнее решение работает только если файл заканчивается новой строкой, иначе последняя строка потеряет символ.

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

Если вы хотите избежать этого, вы можете добавить новую строку в конец файла:

with open(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]

Или более простая альтернатива - зачеркнуть новую строку:

[line.rstrip('\n') for line in file]

Или даже, хотя это довольно нечитабельно:

[line[:-(line[-1] == '\n') or len(line)+1] for line in file]

Который использует тот факт, что возвращаемое значение or - это не булева величина, а объект, который был оценен как true или false.


Метод readlines фактически эквивалентен:

def readlines(self):
    lines = []
    for line in iter(self.readline, ''):
        lines.append(line)
    return lines

# or equivalently

def readlines(self):
    lines = []
    while True:
        line = self.readline()
        if not line:
            break
        lines.append(line)
    return lines

Поскольку readline() сохраняет новую строку, readlines() также сохраняет ее.

Примечание: для симметрии к readlines() метод writelines() не добавляет завершающие новые строки, поэтому f2.writelines(f.readlines()) производит точную копию f в f2.

 sds
sds
Редактировал ответ 23-го января 2017 в 7:16
471
0
 vivek
vivek
8-го сентября 2012 в 11:57
2012-09-08T11:57:56+00:00
Дополнительно
Источник
Редактировать
#17157184
temp = open(filename,'r').read().split('\n')
30
0
 RENZO
RENZO
1-го февраля 2019 в 12:18
2019-02-01T12:18:08+00:00
Дополнительно
Источник
Редактировать
#17157191

Я думаю, что это лучший вариант.

temp = [line.strip() for line in file.readlines()]
 cieunteung
cieunteung
Редактировал ответ 13-го мая 2019 в 12:55
10
0
 Marcel
Marcel
17-го августа 2017 в 2:01
2017-08-17T02:01:22+00:00
Дополнительно
Источник
Редактировать
#17157187
temp = open(filename,'r').read().splitlines()
10
0
 O95
O95
28-го сентября 2018 в 3:04
2018-09-28T15:04:31+00:00
Дополнительно
Источник
Редактировать
#17157190

другой пример:

Прочитав одну строку файла по времени. Удаление нежелательных символов с конца строки ул.rstrip(чарс)

with open(filename, 'r') as fileobj:
    for row in fileobj:
        print( row.rstrip('\n') )

см. также стр.прокладка([Чарси]) и пр..lstrip([символов])

(в Python >= 2.0)

 pushkin
pushkin
Редактировал ответ 28-го декабря 2018 в 7:14
9
0
Nitesh Soni
Nitesh Soni
5-го февраля 2018 в 4:23
2018-02-05T04:23:56+00:00
Дополнительно
Источник
Редактировать
#17157188

Попробуйте это:

u=open("url.txt","r")  
url=u.read().replace('\n','')  
print(url)  
 SherylHohman
SherylHohman
Редактировал ответ 5-го февраля 2018 в 6:12
1
0
 srus
srus
4-го октября 2016 в 12:33
2016-10-04T12:33:17+00:00
Дополнительно
Источник
Редактировать
#17157186
import csv

with open(filename) as f:
    csvreader = csv.reader(f)
    for line in csvreader:
         print(line[0])
0
0
 blueray
blueray
2-го октября 2019 в 9:46
2019-10-02T09:46:52+00:00
Дополнительно
Источник
Редактировать
#17157192

Чтобы удалить все начальные и конечные пробельные символы (по аналогии с Абага'ы ответ) -

temp = [line.strip() for line in open("filename")]

Чтобы удалить все конечные whitspaces включая символ новой строки -

temp = [line.rstrip() for line in open("filename")]

Если вы хотите просто удаляет замыкающий символ новой строки, а не пробелы -

temp = [line.rstrip('\r\n') for line in open("filename")]

С. П. Если вы находите это полезным, то, пожалуйста, проголосовать за него.

 blueray
blueray
Редактировал ответ 3-го октября 2019 в 7:00
0
0
 Necriss
Necriss
12-го августа 2018 в 2:39
2018-08-12T14:39:12+00:00
Дополнительно
Источник
Редактировать
#17157189
my_file = open("first_file.txt", "r")
for line in my_file.readlines():
    if line[-1:] == "\n":
        print(line[:-1])
    else:
        print(line)
my_file.close() 
-1
0
 user4730171
user4730171
30-го марта 2015 в 2:31
2015-03-30T14:31:43+00:00
Дополнительно
Источник
Редактировать
#17157185
def getText():
    file=open("ex1.txt","r");

    names=file.read().split("\n");
    for x,word in enumerate(names):
        if(len(word)>=20):
            return 0;
            print "length of ",word,"is over 20"
            break;
        if(x==20):
            return 0;
            break;
    else:
        return names;

def show(names):
    for word in names:
        len_set=len(set(word))
        print word," ",len_set

for i in range(1):

    names=getText();
    if(names!=0):
        show(names);
    else:
        break;
 Pang
Pang
Редактировал ответ 1-го апреля 2015 в 1:07
-6
0
Похожие сообщества 30
Python beginners
Python beginners
17 345 пользователей
Вопросы про Python для чайников. Cпам и троллинг неприемлем. Частозадаваемые вопросы: https://github.com/ru-python-beginners/faq/blob/master/README.md Правила группы: https://t.me/ru_python_beginners/1649981
Открыть telegram
Python
Python
14 260 пользователей
Уютный чат для профессионалов, занимающихся поиском питоньих мудростей. Как не получить бан: https://t.me/ru_python/1961404
Открыть telegram
🐍 Python Stepik Chat
🐍 Python Stepik Chat
11 616 пользователей
Этот уютный чат создан для помощи в решение задач на прекрасном курсе "Поколение Python: курс для начинающих" и не только. Правила: https://t.me/pythonstepikchat/619142 Чат для оффтопа - t.me/+fqNb78zlQY81NGUy Наш канал - @kimport_this
Открыть telegram
aiogram
aiogram
8 250 пользователей
Репозиторий: https://github.com/aiogram/aiogram Сайт: https://aiogram.dev Полезная информация: https://t.me/aiogram_ru/1421485?thread=1421477
Открыть telegram
Python — вакансии и аналитика
Python — вакансии и аналитика
6 468 пользователей
Публикуем вакансии и запросы на поиск работы по направлению Python, Flask и т.д. Здесь всё: full-time, part-time, remote и разовые подработки. См. также: @golang_jobs, @qa_jobs, @devops_jobs, @javascript_jobs, @nodejs_jobs, @uiux_jobs, @products_jobs
Открыть telegram
Сообщество Python Программистов
Сообщество Python Программистов
5 885 пользователей
Канал: @pip_install Наши сайты: https://python-scripts.com https://selenium-python.com https://itfy.org Мы в ВК: https://vk.com/open_sourcecode Вакансии: https://t.me/python_scripts_hr
Открыть telegram
Добавить вопрос
Категории
Все
Технологий
Культура / Отдых
Жизнь / Искусство
Наука
Профессии
Бизнес
Пользователи
Все
Новые
Популярные
1
Ilya Smirnov
Зарегистрирован 5 дней назад
2
Денис Васьков
Зарегистрирован 1 неделю назад
3
Dima Patrushev
Зарегистрирован 1 неделю назад
4
sirojidddin otaboyev
Зарегистрирован 2 недели назад
5
Елена Гайдамамакинат
Зарегистрирован 2 недели назад
DE
EL
ES
FR
ID
IT
JA
KO
LT
NL
PT
RO
RU
SL
TR
ZH
© kzen.dev 2023
Источник
stackoverflow.com
под лицензией cc by-sa 3.0 с атрибуцией