Найти - Пользователи
Полная версия: Построчное сравнение файлов
Начало » Python для новичков » Построчное сравнение файлов
1
nv_fan
Добрый день.

Задача - найти совпадения строк данного текстового файла с исходным. Внутри файлов цифро/буквенные артикулы по типу 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')

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

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

 with open("1_.csv") as f1, open("2_.csv") as f2:
     for x1, x2 in zip(f1,f2):
         if x1 == x2:
             print(":)")
         else:
             print(":(")
nv_fan
Всем спасибо. Думал может по неопытности что-то напортачил в коде…
Пошел искать проблему в исходных файлах.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB