Python script для Notepad++ убирающий дубликаты строчек
может быть у кого-то уже есть готовый скрипт на питоне, который можно использовать как плагин в notepad++ и который убирает все дубликаты строчек, ОСТАВЛЯЯ самое верхнее значение
**я знаю что можно регулярками это сделать, но в том случае остаётся нижнее значение, и бывали случаи, когда не всё шло корректно...
поэтому хотелось бы сделать через Скрипт на питоне...
а также, забыл написать, что важно чтобы порядок строк никак не менялся!!
строчек много, допустим 5000
дубликаты разбросаны, и могут быть где угодно
нужно убрать все точные совпадения строк
искал на форумах и пробовал... но верного результата так и не удалось добиться...
До Скрипта:
Sndwave - Without You
Ben Delay - Believe'20
Jack Back - Freedom
Simioli - Tears Dry On Their Own
Milk Bar - Feel So High
Redfield - Never The Same
Scotty Boy - Keep On Rocking
Jack Back - Freedom
Simioli - Tears Dry On Their Own
Milk Bar - Feel So High
После Скрипта:
Sndwave - Without You
Ben Delay - Believe'20
Jack Back - Freedom
Simioli - Tears Dry On Their Own
Milk Bar - Feel So High
Redfield - Never The Same
Scotty Boy - Keep On Rocking
прошу помочь...
Ответы (1 шт):
Ну если вам лень копировать из коментария, то вот:
#!/usr/bin/python -tt
# -*- coding: UTF-8 -*-
# vim: ts=4 sw=4 et ai si
from __future__ import print_function
import sys
def main(argv):
if len(argv) < 2:
raise SystemExit("No given file")
dups = set()
for line in open(argv[1], 'rt').readlines():
if line in dups:
continue
dups.add(line)
sys.stdout.write(line)
if __name__ == "__main__":
sys.exit(main(sys.argv))
Сохраняете в файл, например, remove_duplicate_lines.py и запускаете так
$ ./remove_duplicate_lines.py my_cool_file_with_dups.txt
Sndwave - Without You
Ben Delay - Believe'20
Jack Back - Freedom
Simioli - Tears Dry On Their Own
Milk Bar - Feel So High
Redfield - Never The Same
Scotty Boy - Keep On Rocking
Чтобы запустить в Notepad++ как вставку, надо вначале установить PythonScript (GitHub) и PythonScript (простая установка). Скрипт, конечно, тоже придётся поменять (не тестировался за неимением Notepad++).
# -*- coding: UTF-8 -*-
# vim: ts=4 sw=4 et ai si
from Npp import editor, notepad
duplicates = None
def remove(contents, lineNumber, totalLines):
global duplicates
if contents in duplicates:
editor.deleteLine(lineNumber)
return 0 # same line
duplicates.add(contents)
return 1 # next line
def main():
global duplicates
duplicates = set()
editor.forEachLine(remove)
notepad.messageBox("Removals completed", "Duplicate removal (based on Python Script)", 0)
main()
Использовался как основа Remove and Modify selected lines.