Форум сайта python.su
0
Всем привет!
Понадобилось в большом файле удалить повторяющиеся строки.
Нагуглил такой код:
#! /usr/bin/env python input = open('in.txt', 'r') output = open('out.txt', 'w') linesarray = input.readlines() input.close() seen = [] for i in range(len(linesarray)): if seen.count(linesarray[i]) == 0: seen.append(linesarray[i]) output.write(linesarray[i]) output.close()
if seen.count(linesarray[i]) == 0:
Офлайн
75
Seganapa
ты не знаешь что делает count?
Офлайн
0
Я знаю что делает count, но как это помогает сравнить строки? По количеству символов что ли?
Офлайн
568
SeganapaТы же в список строки добавляешь, поэтому count возвращает количество строк в списке.
Я знаю что делает count, но как это помогает сравнить строки? По количеству символов что ли?
Офлайн
0
Ну я так и подумал. Т.е. Если так получится что в двух строках будут разные слова но одинаковое количество символов, то строки будут считаться одинаковыми. Я прав? Подтвердите мои подозрения ))
В таком случае этот алгоритм мне не подходит. Как правильно сделать?
Офлайн
1
А вы код проверили, прежде чем клеймить? На мой взгляд, он совершеннно правильный
if seen.count(linesarray[i]) == 0: # в списке seen нет строки linesarray[i]
Отредактировано Hyyudu (Июль 18, 2014 10:22:11)
Офлайн
857
SeganapaДобавлять во множество хеши строк.
Как правильно сделать?
Офлайн
22
а так не лучше?
#! /usr/bin/env python input = open('in.txt', 'r') output = open('out.txt', 'w') linesarray = input.readlines() input.close() seen = [] for line in linesarray: if line not in seen: seen.append(line) output.writelines(seen)
Офлайн
0
Теперь все стало понятно! Спасибо всем огромное!!!
Офлайн
568
Честно говоря, идея сравнения строк мне не нравится. Что если попробовать хранить строки в словаре с ключом - хеш строки?
Офлайн