Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Центр помощи
  • » difflib выдает совпадения в файле хотя должен показать только исключения из первого [RSS Feed]

#1 Июль 19, 2022 11:48:10

JonDou12
Зарегистрирован: 2022-07-19
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

difflib выдает совпадения в файле хотя должен показать только исключения из первого

Есть два файла. Шаблон (в котором могут быть разные значения, но я уже вбил только цифры что бы было удобнее и исключить проблемы кодировок) и проверяемый файл. Нужно выбрать в отдельный лог только исключения из первого файла (например первый файл 1 2 3 4, второй файл - 3, должно упасть в лог 1, 2, 4)

https://pastebin.com/4mj7UVJE код на пастебине

прикрепил файлы в архиве.

До тысячи строк работает более менее. Затем начинает выбивать одинаковые записи, которые есть и в шаблоне и в проверяемом. Сделал проверку в экселе на равенство (отсортировал по возрастанию и через ложь истину проверил) = все срабатывает. По результатам этого скрипта в тех же файлах полно отсутствий. в чем я ошибся?

Прикреплённый файлы:
attachment сверка с 1с.rar (15,7 KБ)

Офлайн

#2 Июль 19, 2022 12:17:04

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1393
Репутация: +  124  -
Профиль   Отправить e-mail  

difflib выдает совпадения в файле хотя должен показать только исключения из первого

не знаю на сколько это быстро работает и в множестве будут только уникальные значения

  
with (
    open('/home/xam/Загрузки/сверка с 1с/1.txt', 'r') as f1, # там 1 2 3 4 , по числу в строке
    open('/home/xam/Загрузки/сверка с 1с/2.txt', 'r') as f2 # там число 3
):
    s1 = {i.strip() for i in f1.readlines()}
    s2 = {i.strip() for i in f2.readlines()}
print(s1)
print('\n==================\n')
print(s2)
print('\n==================\n')
print(s1 - s2)
вывод
 
{'2', '4', '1', '3'}

==================

{'3'}

==================

{'2', '4', '1'}

Отредактировано xam1816 (Июль 19, 2022 12:17:50)

Офлайн

#3 Июль 19, 2022 12:25:45

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

difflib выдает совпадения в файле хотя должен показать только исключения из первого

JonDou12
если я правильно понял задачу, то я бы сделал так

  
$ comm -31 test1.txt test2.txt



Отредактировано FishHook (Июль 19, 2022 12:26:04)

Офлайн

#4 Июль 19, 2022 12:44:06

JonDou12
Зарегистрирован: 2022-07-19
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

difflib выдает совпадения в файле хотя должен показать только исключения из первого

FishHook
JonDou12если я правильно понял задачу, то я бы сделал так
А это терминал линукса? у меня просто на винде стоит. и это не похоже на код питона (((

Офлайн

#5 Июль 19, 2022 12:45:29

JonDou12
Зарегистрирован: 2022-07-19
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

difflib выдает совпадения в файле хотя должен показать только исключения из первого

xam1816
не знаю на сколько это быстро работает и в множестве будут только уникальные значения
Спасибо. скорость не особо важна. Так что ваш пример кажется работает) спасибо.а то что то везде про этот difflib натыкаюсь, а ваше решение проще и понятнее.

 c = s1-s2
f = open('out_difference.txt','w', encoding="utf-8")
for item in c:
    f.write("%s\n" % item)
f.close()

добавил это что бы выводил в лог. и тест он прошел) Дальше уже если что буду сам модернизировать

Отредактировано JonDou12 (Июль 19, 2022 12:46:32)

Офлайн

#6 Июль 19, 2022 13:43:50

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

difflib выдает совпадения в файле хотя должен показать только исключения из первого

JonDou12
А это терминал линукса?
ага



Офлайн

  • Начало
  • » Центр помощи
  • » difflib выдает совпадения в файле хотя должен показать только исключения из первого[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version