Найти - Пользователи
Полная версия: чтение из файла ( по строкам, не с начала)
Начало » Python для новичков » чтение из файла ( по строкам, не с начала)
1 2 3
bad_playa
Здравствуйте. Есть .txt файл. Нужно прочитать по строкам(в выбраном диапазоне строк, например с 3 по 6).
Подскажите варианты, пожалуйста..
Iskatel
А какие варианты Вы уже пробовали?
Iskatel
bad_playa
с 3 по 6

если нумерация с единицы и с 3 по 6 включительно, например так:

def read_dump_str(fp,start,stop):
    for i in xrange(stop):
        line = fp.readline()
        if i >= start-1:
            yield(line)
        
with open('c:\\test.txt','rb') as f:
    for s in read_dump_str(f,3,6):
        print s

py.user.next
>>> import itertools
>>> 
>>> list(itertools.islice(open('/etc/passwd'), 2, 5))
['daemon:x:2:2:daemon:/sbin:/sbin/nologin\n', 'adm:x:3:4:adm:/var/adm:/sbin/nologin\n', 'lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin\n']
>>>
Kir@
Iskatel
если нумерация с единицы и с 3 по 6 включительно, например так:
name ‘xrange’ is not defined

А если нужно прочитать каждую третье строку?
Iskatel
Kir@
name ‘xrange’ is not defined
это во втором питоне, наверное в третьем просто range()

Kir@
А если нужно прочитать каждую третье строку?
Секрет в том, что их все равно все читать придется - пропускай каждые две, а третью обрабатывай
Kir@
Iskatel
Секрет в том, что их все равно все читать придется - пропускай каждые две, а третью обрабатывай
Да не вопрос, прочитаю, еще одна ошибка:
AttributeError: ‘str’ object has no attribute ‘readline’
Iskatel
Kir@
AttributeError: ‘str’ object has no attribute ‘readline’

а что ты как fp передаешь? случайно read() перед передачей не вызвал?
Kir@
Iskatel
а что ты как fp передаешь? случайно read() перед передачей не вызвал?
import re
from tkinter import*
root = Tk()
#Функция чтения строк
def read_dump_str(fp,start,stop):
    for i in range(stop):
        line = fp.readline()
        if i >= start-1:
            yield(line)
#Текст и паттерн
sovlad='Совладельцы (источник: ЕГРЮЛ) <> <> <> <> <> <> <> <> <> <> <> <> <> Наименование <> Местонахождение <> Доля в УК, руб. <> Доля в УК, % <> Дата внесения в ЕГРЮЛ <> <> <> ИСКРА, ООО <> Российская Федерация, Хакасия респ., г. Абакан, ул. Советская, д. 209 <> 1 479 280 <> 28,86 <> 10.10.2008 <> <> <> Топоев Вадим Ильич <> <> 1 479 280 <> 28,86 <> 10.10.2008 <> <> <>'
pattern=r'<>([А-я\s.,]*)<>([А-я\s.,\d]*)<>(?:[\d\s]*)[<>\s]*([\d]+)[<>\s]*[\d.\s,]*'
#Обработка
dano=re.M | re.S | re.U
object = re.compile(pattern, dano)
result=object.finditer( sovlad )
group_name_by_index = dict( [ (m,s,u) for m,s,u in object.groupindex.items() ] )
for match in result:
    for group_index, group in enumerate(match.groups()):
        if group:           
            #print(group)
            f=group
            for s in read_dump_str(f,1,4):
                print(s)     
Iskatel
но в моем то примере там указатель на файловый объект, а у тебя строка.
тебе тот пример совсем не подходит
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB