Divergent
Март 5, 2010 09:39:34
В моей мини проге считываю данные из файла и записываю в другой определённые данные.
Записываемые данные иногда повторяются. Как сделать так, чтобы при повторении данные не записывались?
Ferroman
Март 5, 2010 10:27:37
В каком смысле “повторяются”? По всему файлу, или подряд?
Divergent
Март 5, 2010 10:35:34
По всему файлу. То есть к примеру первая строчка и тысяча первая повторяются. Как бы сделать так, чтобы при записи тысячи первой строки её не записывать или записать “повтор”, так как она уже есть.
Ferroman
Март 5, 2010 11:03:12
Читать в память, после чего удалять дубли. Годится, если файл маленький.
Делать хеш каждой строчки и держать в месте удобном для поиска - памяти (надо посчитать для какого размера имеет смысл), или в временной базе данных (sqlite), если файл очень большой и строчек слишком много, что бы оперировать в памяти их хешами. Ну, или есть ограничение на размер оперативки.
Divergent
Март 5, 2010 12:19:13
Я пробовал создать ещё третий файл куда будут скидываться сначало данные, затем во второй. Далее по циклу прежде чем записать во второй идёт проверка в третьем.
Ferroman
Март 5, 2010 15:23:28
Я бы писал хеш, и в базу. Ввод-вывод большой строки, думаю, медленнее, чем вычисление хеша и его зачитка.
Divergent
Март 16, 2010 09:27:52
Хелп ми…
Не могу понять в чём косяк объявленной мною функции.
def NOMER(l):
if re.search(r“\d{6}\n”,l):
print l
s=l
return s
Дальше в окне даю
>>> l=f1.readline()
>>> print l
112233
>>> NOMER(l)
Traceback (most recent call last):
File “<pyshell#94>”, line 1, in <module>
NOMER(l)
File “<pyshell#75>”, line 5, in NOMER
return s
UnboundLocalError: local variable ‘s’ referenced before assignment
Нужно чтобы далее я мог использовать переменную s в другом цикле.
Ferroman
Март 16, 2010 11:47:44
Один вопрос - одна тема.