Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 30, 2011 00:07:56

n2b
От:
Зарегистрирован: 2011-02-10
Сообщения: 125
Репутация: +  0  -
Профиль   Отправить e-mail  

Чтение файла, readlines()

Читаю файл:

file = file.readlines()
Файл следующего вида:
line1
line2
...
lineN
Все строки, кроме последней, он читает так - “line1\n, line2\n, … , lineN”.
То есть, переход на новую строку он читает вот так - \n - при выводе прочитанного файла в окно, \n отображается как квадратик(неизвестный символ, проще говоря).
Вопрос, как избавится от \n?



Офлайн

#2 Окт. 30, 2011 00:17:12

Actor
От:
Зарегистрирован: 2010-10-10
Сообщения: 39
Репутация: +  0  -
Профиль  

Чтение файла, readlines()

f = file("filename.py").readlines()
for i in xrange(len(f) - 1): f[i] = f[i][0:-1]
хотя наверняка есть вариант получше



Офлайн

#3 Окт. 30, 2011 00:27:18

n2b
От:
Зарегистрирован: 2011-02-10
Сообщения: 125
Репутация: +  0  -
Профиль   Отправить e-mail  

Чтение файла, readlines()

Пробежка по файлу и удаление последнего символа?
Прокомментируйте пожалуйста Ваш код, не совсем понятно.
Особенно вот это:

f[i] = f[i][0:-1]



Офлайн

#4 Окт. 30, 2011 00:34:15

Actor
От:
Зарегистрирован: 2010-10-10
Сообщения: 39
Репутация: +  0  -
Профиль  

Чтение файла, readlines()

это смайлик ангела

0:-1
элемент f - это строка. насколько я помню, строки в питоне неизменяемы, по-этому элементу f мы присваиваем “новую” строку, состоящую с первого по предпоследний символ бывшей строки.

кстати, можно писать не f, а f



Отредактировано (Окт. 30, 2011 00:35:09)

Офлайн

#5 Окт. 30, 2011 01:11:48

n2b
От:
Зарегистрирован: 2011-02-10
Сообщения: 125
Репутация: +  0  -
Профиль   Отправить e-mail  

Чтение файла, readlines()

Если мы присваиваем каждому элементу списка новую строку, с первого, по предпоследний элемент каждой строки, тогда зачем нам вот это - len(f) - 1 ?

Если я правильно понял, то здесь мы вычитаем из длины списка f 1 элемент? Да? ЗачеМ?



Офлайн

#6 Окт. 30, 2011 05:09:11

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

Чтение файла, readlines()

1) readlines() не нужен.
2) в приведенном примере используется переменная file - ужас.

file_data = list()
with open('somefile') as fd:
for line in fd:
line = line.strip()
if line:
file_data.append(line)
А если так уж хочется readlines то:
file_data = map(lambda a:a.strip(),  fd.readlines())

Отредактировано (Окт. 30, 2011 05:27:37)

Офлайн

#7 Окт. 31, 2011 12:10:12

Vader
От:
Зарегистрирован: 2010-01-30
Сообщения: 152
Репутация: +  0  -
Профиль   Отправить e-mail  

Чтение файла, readlines()

Можно еще так сделать:

with open('file') as f:
data = f.read().split('\n')



Отредактировано (Окт. 31, 2011 12:10:26)

Офлайн

#8 Окт. 31, 2011 20:46:30

ks
От:
Зарегистрирован: 2009-05-20
Сообщения: 61
Репутация: +  0  -
Профиль   Отправить e-mail  

Чтение файла, readlines()

Vader
Можно еще так сделать:
with open('file') as f:
data = f.read().split('\n')
наверное даже так
with open('file') as f:
    data = f.read().split('\n')[0]
# [0] , как указатель на первый элемент получившегося после разделения



Отредактировано ks (Сен. 28, 2012 18:20:56)

Офлайн

#9 Ноя. 1, 2011 08:13:00

Vader
От:
Зарегистрирован: 2010-01-30
Сообщения: 152
Репутация: +  0  -
Профиль   Отправить e-mail  

Чтение файла, readlines()

ks
наверное даже так
with open('file') as f:
data = f.read().split('\n') >>> (str, ‘\n’)
# , как указатель на первый элемент получившегося после разделения
Нет, так делать не нужно.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version