Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 16, 2020 08:45:54

nv_fan
Зарегистрирован: 2020-02-07
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Построчное сравнение файлов

Добрый день.

Задача - найти совпадения строк данного текстового файла с исходным. Внутри файлов цифро/буквенные артикулы по типу art134HT78, без пробелов, на каждую строку один артикул.

Использую подобный код:

 name = str(input('Enter file name: '))
with open(name+'.txt', 'r') as file1:
    with open('all.txt', 'r') as file2:
        same = set(file1).intersection(file2)
same.discard('\n')
with open('output.txt', 'w') as file_out:
    for line in same:
        file_out.write(line)
print ('\nAll Done')
input('\n\nPress ENTER to exit')

Но происходят пропуски.
Подскажите что не так?

Офлайн

#2 Авг. 16, 2020 10:38:45

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9885
Репутация: +  853  -
Профиль   Отправить e-mail  

Построчное сравнение файлов

nv_fan
Подскажите что не так?
На экран выведи same. Скорее всего, там пробелы в конце строк есть, которых в редакторе при чтении не видно, но которые не равны \n.



Офлайн

#3 Авг. 16, 2020 10:58:29

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Построчное сравнение файлов

nv_fan
Подскажите что не так?
Без файлов и примера пропуска не разберешься.
Обычно связано с отсутствием нормализации входа. Разные типы концов строк (unix/win какая у вас ОС изготовления и слияния файлов) или разное количество пробелов (как вы обеспечиваете что они без пробелов в конце строки?). Бывает что кто-то в разные файлы вставил одинаковые по начертанию русские и латинские буквы.

p.s.
два with я бы объединил в один.
И я бы конечно не работал со строками содержащими перевод строки в конце. Привык к чемуто типа
 f.read().split("\n")
Оно вроде даже быстрее работает чем итератор по файлу.



Отредактировано doza_and (Авг. 16, 2020 11:06:19)

Офлайн

#4 Авг. 16, 2020 12:50:20

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2757
Репутация: +  184  -
Профиль   Отправить e-mail  

Построчное сравнение файлов

> Построчное сравнение файлов

 with open("1_.csv") as f1, open("2_.csv") as f2:
     for x1, x2 in zip(f1,f2):
         if x1 == x2:
             print(":)")
         else:
             print(":(")



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Отредактировано Rodegast (Авг. 16, 2020 13:00:27)

Офлайн

#5 Авг. 16, 2020 19:08:06

nv_fan
Зарегистрирован: 2020-02-07
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Построчное сравнение файлов

Всем спасибо. Думал может по неопытности что-то напортачил в коде…
Пошел искать проблему в исходных файлах.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version