Форум сайта python.su
0
В моей мини проге считываю данные из файла и записываю в другой определённые данные.
Записываемые данные иногда повторяются. Как сделать так, чтобы при повторении данные не записывались?
Офлайн
1
В каком смысле “повторяются”? По всему файлу, или подряд?
Офлайн
0
По всему файлу. То есть к примеру первая строчка и тысяча первая повторяются. Как бы сделать так, чтобы при записи тысячи первой строки её не записывать или записать “повтор”, так как она уже есть.
Офлайн
1
Читать в память, после чего удалять дубли. Годится, если файл маленький.
Делать хеш каждой строчки и держать в месте удобном для поиска - памяти (надо посчитать для какого размера имеет смысл), или в временной базе данных (sqlite), если файл очень большой и строчек слишком много, что бы оперировать в памяти их хешами. Ну, или есть ограничение на размер оперативки.
Офлайн
0
Я пробовал создать ещё третий файл куда будут скидываться сначало данные, затем во второй. Далее по циклу прежде чем записать во второй идёт проверка в третьем.
Офлайн
1
Я бы писал хеш, и в базу. Ввод-вывод большой строки, думаю, медленнее, чем вычисление хеша и его зачитка.
Офлайн
0
Хелп ми…
Не могу понять в чём косяк объявленной мною функции.
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 в другом цикле.
Отредактировано (Март 16, 2010 09:28:23)
Офлайн
1
Один вопрос - одна тема.
Офлайн