Python ծրագիր երկու տեքստային ֆայլերից եզակի տողեր գտնելու համար


Շատ անգամ մենք տեսնում ենք երկու ֆայլ, որոնք նման են, բայց ունեին որոշակի տարբերություններ: Եթե ֆայլերը մեծ են կամ ունեն շատ բովանդակություն, այդ տարբերությունը որոնելը կամ այդ ֆայլի եզակիությունը ձեռքով գտնելը հեշտ չէ: Այնուամենայնիվ, երկու տեքստային ֆայլերում եզակի տողեր գտնելու այս խնդիրը կարելի է հեշտությամբ կատարել Python ծրագրերի միջոցով: Այս հոդվածում, օգտագործելով երեք տարբեր օրինակներ, տրված են երկու տեքստային ֆայլերում եզակի տողեր գտնելու երեք տարբեր եղանակներ: Օգտագործված տեքստային ֆայլերն են a.txt և b.txt, մինչդեռ վերջում արդյունքը պահվում է մեկ այլ txt ֆայլում:

Այս օրինակի համար txt ֆայլերի բովանդակության կամ տողերի տարբերությունները ներկայացված են այստեղ −

Lines Given In text files In a.txt In b.txt

Introduction to Computers

Yes

Yes

Introduction to Programming Concepts

Yes

Yes

Introduction to Windows, its Features, Application

Yes

Yes

C++ Programming

No

Yes

Computer Organization Principles

Yes

Yes

Database Management Systems

Yes

Yes

Introduction to Embedded Systems

Yes

Yes

Fundamentals of PHP

Yes

Yes

Mathematical Foundation For Computer Science

Yes

No

Java Programming

Yes

Yes

Functions

Yes

Yes

Arrays

Yes

Yes

Disk Operating System

Yes

Yes

Introduction to Number system and codes

No

Yes

Data Mining

Yes

Yes

Software Engineering

Yes

No

Computer Networks

Yes

Yes

Control Structures

Yes

Yes

Օրինակ 1 - Գտեք եզակի տողեր երկու տեքստային ֆայլերից՝ կրկնելով և համեմատելով երկու ֆայլերի առանձին տողերը:

Ալգորիթմ

Քայլ 1 - Բացեք երկու տեքստային ֆայլերը կարդալու ռեժիմում:

Քայլ 2 - Կարդացեք տողերը a.txt-ում afile-ում և readlines-ը b.txt-ում և պահեք այն bfile-ում:

Քայլ 3 - Ստեղծեք դատարկ ցուցակ, որը կոչվում է cfile: Անցեք տող առ տող bfile-ում: Եթե աֆայլում տող չկա, այն կցեք cfile-ին:

Քայլ 4 - Այժմ անցեք տող առ տող ֆայլում: Եթե bfile-ում տող չկա, այն կցեք cfile-ին: Գրեք cֆայլը finalRes.txt-ում:

Քայլ 5 - Գործարկեք ծրագիրը և ստուգեք արդյունքը:

Python ֆայլը պարունակում է սա

af = open('a.txt', 'r')
afile = af.readlines()
bf = open('b.txt', 'r')
bfile = bf.readlines()
cfile=[]
for ln in bfile:
   if ln not in afile:
      cfile.append(ln)

for ln in afile:
   if ln not in bfile:
      cfile.append(ln)        

resultFile= open('finalRes.txt', 'w')
for lin in cfile:
   resultFile.write(lin)

Դիտելով արդյունքը - Օրինակ 1

Որպես արդյունքում երկու txt ֆայլերում եզակի գծերը տեսնելու համար գործարկեք Python ֆայլը cmd պատուհանում:

C++ Programming
Mathematical Foundation For Computer Science
Software Engineering

Նկար 1: Արդյունքների ֆայլի բովանդակությունը, որը կոչվում է finalRes.txt:

Օրինակ 2. Գտեք եզակի տողեր երկու տեքստային ֆայլերից՝ օգտագործելով difflib գրադարանի մոդուլը:

Ալգորիթմ

Քայլ 1 − Առաջին ներմուծումը Տարբերեք մոդուլը difflib-ից:

Քայլ 2 - Բացեք երկու տեքստային ֆայլերը կարդալու ռեժիմում:

Քայլ 3 - Կարդացեք տողերը a.txt-ում afile-ում և readlines-ը b.txt-ում և պահեք դրանք bfile-ում:

Քայլ 4 - Համեմատեք ֆայլերի տարբերությունները՝ օգտագործելով Differ մոդուլը: Արդյունքը գրեք finalRes1.txt-ում:

Քայլ 5 - Գործարկեք ծրագիրը և ստուգեք արդյունքը:

Python ֆայլը պարունակում է սա

from difflib import Differ

af = open('a.txt', 'r')
afile = af.readlines()
bf = open('b.txt', 'r')
bfile = bf.readlines()

result = list(Differ().compare(afile, bfile))  

resultFile= open('finalRes1.txt', 'w')

for lin in result:
   resultFile.write(lin)

Արդյունքի դիտում - Օրինակ 2

Բացեք cmd պատուհանը և գործարկեք python ֆայլը՝ արդյունքը տեսնելու համար: Արդյունքների ֆայլը ցույց կտա – կամ + երկու ֆայլերի եզակի գծերի դիմաց: + նշանը նշանակում է, որ այդ տողը տրված չէ առաջին txt ֆայլում, մինչդեռ - նշանակում է, որ այդ տողը չկա երկրորդ txt ֆայլում:

Introduction to Computers
  Introduction to Programming Concepts
  Introduction to Windows, its Features, Application
+ C++ Programming
  Computer Organization Principles
  Database Management Systems
  Introduction to Embedded Systems
  Fundamentals of PHP
- Mathematical Foundation For Computer Science
  Java Programming
  Functions
  Arrays
  Disk Operating System
  Introduction to Number system and codes
  Data Mining
- Software Engineering
  Computer Networks
  Control Structures

Նկար 2: Արդյունքների ֆայլի բովանդակությունը, որը կոչվում է finalRes1.txt

Օրինակ 3. Գտեք եզակի տողեր երկու տեքստային ֆայլերից՝ օգտագործելով հեռացնելով նմանատիպ տողերը և պահպանելով եզակի տողերը:

Ալգորիթմ

Քայլ 1 - Բացեք երկու տեքստային ֆայլերը կարդալու ռեժիմում:

Քայլ 2 - Կարդացեք a.txt տողերը afile-ում և բացեք b.txt-ը և պահեք այն bf-ում:

Քայլ 3 - bf-ի բոլոր տողերի համար, եթե այդ տողը գտնվում է afile-ում, հեռացրեք այն ֆայլից: Եթե այն աֆայլում չէ, միացրեք այն մեկ այլ ցուցակի, որը կոչվում է uniqueB

Քայլ 4 - Կցեք afile-ում մնացած տողերը, իսկ uniqueB-ում գտնվող տողերը cfile-ին: Գրեք cֆայլը finalRes2.txt-ում:

Քայլ 5 - Տեղադրեք ծրագիրը և ստուգեք արդյունքը:

Python ֆայլը պարունակում է սա

with open('a.txt', 'r') as af:
   afile = set(af) 
uniqueB = []
cfile=[]
with open('b.txt', 'r') as bf:
   for ln in bf:
      if ln in afile:
         afile.remove(ln)
      else:
         uniqueB.append(ln)
print("\nPrinting all unique lines in both a.txt and b.txt : ")
print('\nAll the lines in a.txt file that are not in b.txt: \n')

for ln in sorted(afile):
   print(ln.rstrip())
   cfile.append(ln)  
print()

print('\nAll the lines in b.txt file that are not in a.txt: \n')

for lin in uniqueB:
   print(lin.rstrip())
   cfile.append(lin)  
print()

resultFile= open('finalRes2.txt', 'w')
for lin in cfile:
   resultFile.write(lin)

Արդյունքի դիտում - Օրինակ 3

Որպես արդյունքում երկու txt ֆայլերում էլ տեսնեք եզակի տողեր, գործարկեք Python ֆայլը cmd պատուհանում:

Mathematical Foundation For Computer Science
Software Engineering
C++ Programming

Նկար 3. Արդյունքների ֆայլի բովանդակությունը, որը կոչվում է finalRes2.txt:

Եզրակացություն

Python-ի այս հոդվածում, օգտագործելով երեք տարբեր օրինակներ, տրված են երկու տեքստային ֆայլերում եզակի տողեր գտնելու ուղիները: Օրինակ 1-ում պարզ կրկնումը և համեմատումը օգտագործվում է տող առ տող անցնելով երկու txt ֆայլերում: Օրինակ 2-ում օգտագործվում է գրադարանային մոդուլ, որը կոչվում է Differ from difflib: Օրինակ 3-ում նմանատիպ տողերը հեռացվում են՝ պահպանելով եզակի տողերը՝ օգտագործելով Python ցուցակները: