Python membandingkan dua file kata demi kata

Saya memiliki 2 file teks dan saya ingin membandingkan konten satu dengan yang lain. Perlu memeriksa ip di Unique. txt ada atau tidak di CheckIp. txt. Kode saya terlihat seperti

with open("/root/nix_bsd_mac_inventory-master/Unique.txt") as fp:
    for line in fp:
        print(line)
        with open("/root/nix_bsd_mac_inventory-master/CheckIp.txt") as fp1:
            for line1 in fp1:
                line1 = line1.rstrip()
                if line == line1:
                    print (line1 + "Ip is Already Present")
                else:
                    print ("Processing Ip:"+ line)

Tampaknya sesuatu yang saya lakukan salah. Dapatkah seseorang tolong bantu saya?

Perintah perbandingan file membantu kita membandingkan file dan menemukan persamaan dan perbedaan antara file-file ini. Berbagai perintah perbandingan file yang digunakan di Unix adalah cmp, comm, diff, dircmp, dan uniq.  

Python membandingkan dua file kata demi kata

Video Unix #8

Berbagai cara membandingkan dua file di Unix

#1) cmp. Perintah ini digunakan untuk membandingkan dua file karakter per karakter.

  • Sintaksis. cmp [opsi] file1 file2
  • Contoh. Tambahkan izin tulis untuk pengguna, grup, dan lainnya untuk file1.
    • $ cmp file1 file2

#2) kom. Perintah ini digunakan untuk membandingkan dua file yang diurutkan.

  • Sintaksis. comm [opsi] file1 file2
  • Satu set opsi memungkinkan pemilihan 'kolom' untuk ditekan
    • -1. menekan baris unik untuk file1 (kolom 1)
    • -2. tekan baris unik untuk file2 (kolom 2)
    • -3. menekan baris umum untuk file1 dan file2 (kolom3)
  • Contoh. Hanya tampilkan kolom-3 yang berisi baris umum antara file1 dan file2
    • $ comm -12 file1 file2

#3) perbedaan. Perintah ini digunakan untuk membandingkan dua file baris demi baris.

  • Keterangan. Keluaran menunjukkan bagaimana baris di setiap file berbeda, dan langkah-langkah yang terlibat untuk mengubah file1 menjadi file2. Perintah 'patch' dapat digunakan untuk membuat perubahan yang disarankan. Output diformat sebagai blok

Ubah perintah

< baris dari file1

> baris dari file2

Perintah perubahan dalam format [rentang][acd][rentang]. Kisaran di sebelah kiri mungkin berupa nomor baris atau rentang nomor baris yang dipisahkan koma yang merujuk ke file1, dan rentang di sebelah kanan juga merujuk ke file2. Karakter di tengah menunjukkan tindakan i. e. tambah, ubah atau hapus

Dalam tutorial ini Anda akan belajar memilih kata dari file, membandingkannya, dan menggabungkan kata-kata umum dalam file baru

Anda akan berlatih 🔁

  • Penanganan file dengan Python
  • Set dengan Python
  • Menggunakan fungsi untuk menggunakan kembali kode
  • Beberapa instruksi baris perintah dasar

Mari kita mulai 🐍

Kode. Ingat bahwa semua kode yang ditampilkan selama tutorial ini akan didorong ke github

Pengembang-jalan / gabungkan-kata-umum

Program untuk menggabungkan kata-kata umum dari dua file menjadi satu sama lain

menggabungkan-kata-umum

Program untuk menggabungkan kata-kata umum dari dua file menjadi satu sama lain


Lihat di GitHub



Pertama-tama buat file Python, saya akan menggunakan nama file yang panjang dan deskriptif

file1 = open("text_one.txt)
2 😆

Mari buat file itu dengan terminal

Catatan. jika Anda menggunakan windows, tidak satu pun dari perintah ini akan berjalan, jadi lakukan saja semua hal dengan antarmuka grafis, seperti pengelola file dari editor kode Anda. Jika Anda menggunakan Mac 🍎, atau Linux 🐧 tetap santai, dan pelajari terminal sebaik mungkin

Ingat bahwa Python sebagian besar adalah bahasa pemrograman CLI, jadi Anda akan menggunakan banyak terminal, jadi saran saya adalah gunakan terminal kapan pun Anda bisa 😀

touch merge.py

Masuk ke mode layar penuh Keluar dari mode layar penuh

Perintah sentuh akan membuat file kosong

file1 = open("text_one.txt)
2, di direktori tempat Anda berada

Sekarang saya akan memanggil editor grafis, dari terminal 😱, dalam hal ini saya akan menggunakan vscode

code ./
_

Masuk ke mode layar penuh Keluar dari mode layar penuh

Ingatlah bahwa di UNIX (jangan takut, ini mengacu pada OS berbasis Unix, seperti Linux dan Mac),

file1 = open("text_one.txt)
4 titik mengacu pada direktori saat ini

Sekarang setelah saya menyiapkan Vscode dan mari kita mulai dengan kodenya

Buka file dengan Python

Pertama-tama, kami akan menggunakan beberapa file teks dalam tutorial ini, Anda dapat mengunduhnya dengan mudah di github, dengan mengkloning repositori atau cukup mengikuti tautan di bawah ini

text_one. txt
teks_dua. txt

Di Python Anda membuka file dengan fungsi,

file1 = open("text_one.txt)
5 yang mengambil sebagai parameter jalur file

Pastikan Anda telah mengunduh file teks, dan ketik file

file1 = open("text_one.txt)
2 kode berikut

file1 = open("text_one.txt)
_

Masuk ke mode layar penuh Keluar dari mode layar penuh

Ini akan membuat variabel

file1 = open("text_one.txt)
_7, yang merupakan objek file, dengan mode "baca" (secara default)

Jika Anda mencoba mencetak variabel itu, Anda akan mendapatkan sesuatu seperti ini


print(file1)

# Result
# <_io.TextIOWrapper name='text_one.txt' mode='r' encoding='UTF-8'>

Masuk ke mode layar penuh Keluar dari mode layar penuh

Itu karena variabel itu hanyalah objek file dari file teks bernama, "text_one. txt"

Tapi hati-hati jika file tersebut tidak ada, Anda akan mendapatkan error 😱

file1 = open("text_oness.txt")

# FileNotFoundError: [Errno 2] No such file or directory: 'text_oness.txt'

Masuk ke mode layar penuh Keluar dari mode layar penuh

Jadi setiap kali kita bekerja dengan file, kita harus menggunakan beberapa pemrograman defensif, untuk menghindari kesalahan jika file tidak ada

try:
    file1 = open("text_oness.txt")
except FileNotFoundError:
    print("Sorry that file doesn't exist")
    exit()

Masuk ke mode layar penuh Keluar dari mode layar penuh

Kami menggunakan fungsi

file1 = open("text_one.txt)
_8 karena jika file tidak ada, kami tidak akan memiliki variabel untuk dikerjakan, jadi dalam hal ini kami akan menghentikan eksekusi

Jika Anda ingin mendapatkan konten file dengan Python, Anda akan menggunakan fungsi

file1 = open("text_one.txt)
9, seperti namanya, bacakan untuk kami konten file itu

print(file1.read())

# Results
# Why should you learn to write programs?

# Writing programs (or programming) is a very creative 
# and rewarding activity. MORE TEXT .....

Masuk ke mode layar penuh Keluar dari mode layar penuh

Sekarang setelah Anda tahu cara membuka file, dan membacanya, Anda seharusnya dapat membuat fungsi perbandingan tersebut

Pertama pastikan kita bisa membuka kedua file tersebut

try:
    file1 = open("text_one.txt")
    file2 = open("text_two.txt")
except FileNotFoundError:
    print("Sorry that file doesn't exist")
    exit()

Masuk ke mode layar penuh Keluar dari mode layar penuh

Sekarang kita akan menggunakan konten file dan kekuatan set untuk mendapatkan semua kata dari setiap file

Set dengan Python

Himpunan dengan Python, adalah struktur data yang tidak terurut, dengan karakteristik yang sangat khusus (antara lain), tidak mengizinkan elemen berulang 🤫

Kami akan menggunakannya, untuk bisa mendapatkan kata-kata, tanpa mengulang

Membuat satu set dengan Python

Untuk membuat set dengan Python kita akan menggunakan fungsi


print(file1)

# Result
# <_io.TextIOWrapper name='text_one.txt' mode='r' encoding='UTF-8'>
0

empty_set = set()

Masuk ke mode layar penuh Keluar dari mode layar penuh

Satu set VS daftar

mylist = list("122333")
myset = set("122333")

print(mylist)
print(myset)

# List:
# ['1', '2', '2', '3', '3', '3']

# Set
# {'3', '2', '1'}

Masuk ke mode layar penuh Keluar dari mode layar penuh

Seperti yang Anda lihat, daftar mencetak semua elemen secara berurutan, tetapi set hanya mencetak elemen yang tidak diulang, dan tidak diurutkan

Mendapatkan kata-kata dari file

Kami akan mengulangi kata-kata dari file dengan for loop, dan menambahkannya dalam satu set untuk setiap file

code ./
_0

Masuk ke mode layar penuh Keluar dari mode layar penuh

Mungkin kode di atas sedikit membingungkan, tapi mari kita lihat sekilas

Pertama kita menginisialisasi, dua set, satu untuk file pertama, yang lain untuk file kedua

Kemudian kami mengulang dengan perulangan for, setiap kata dari file dengan memanggil


print(file1)

# Result
# <_io.TextIOWrapper name='text_one.txt' mode='r' encoding='UTF-8'>
1

Pada bagian itu kami menggunakan metode


print(file1)

# Result
# <_io.TextIOWrapper name='text_one.txt' mode='r' encoding='UTF-8'>
_2, yang memberi kami konten file sebagai string, dan kemudian kami menggunakan metode string

print(file1)

# Result
# <_io.TextIOWrapper name='text_one.txt' mode='r' encoding='UTF-8'>
3, yang memberi kami daftar kata-kata dalam file dengan memisahkan string dalam setiap spasi

Jadi pada dasarnya kita mengulang

code ./
_1

Masuk ke mode layar penuh Keluar dari mode layar penuh

Kemudian kami mendapatkan kata, kami membuatnya menjadi huruf kecil untuk menghindari pengulangan kata, dan menambahkannya ke set


print(file1)

# Result
# <_io.TextIOWrapper name='text_one.txt' mode='r' encoding='UTF-8'>
4. Ingat bahwa dalam satu set tidak boleh ada elemen yang diulang, jika kata sudah ada di set, maka itu tidak akan ditambahkan

Kami melakukan hal yang sama untuk kedua file

Menjalankan potongan kode itu, mengembalikan dua set dengan semua kata dari kedua file

Tantangan

Tapi ada masalah dan saya menantang Anda 🔥 untuk menyelesaikannya
Ada beberapa kata yang memiliki tanda baca khusus, misalnya


print(file1)

# Result
# <_io.TextIOWrapper name='text_one.txt' mode='r' encoding='UTF-8'>
5 dan

print(file1)

# Result
# <_io.TextIOWrapper name='text_one.txt' mode='r' encoding='UTF-8'>
6, dan tugas Anda adalah mencari cara untuk mengganti semua karakter tanda baca, sehingga tidak akan ada kata yang diulang, tetapi dengan tanda baca khusus

Jangkau saya di Twitter, atau Instagram, jika Anda mencapainya

Menggunakan set untuk memotong kata-kata umum

Kami mencari kata-kata umum di set yang baru saja kami buat, dan untuk itu kami akan menggunakan titik-temu

Ya kata itu mungkin terlihat menakutkan karena mungkin Anda pernah melihatnya dalam matematika, tapi jangan khawatir. Persimpangan hanyalah bagian umum dari dua set

Python membandingkan dua file kata demi kata

Elemen yang berpotongan bisa membosankan 🙄, karena dengan sebagian besar struktur data Anda harus mengulang melalui variabel yang berisi elemen, bandingkan mereka, pilih yang diulang dan tambahkan dalam variabel baru

Tetapi dengan set di Python, kami memiliki fungsi khusus yang melakukan semua itu untuk kami,


print(file1)

# Result
# <_io.TextIOWrapper name='text_one.txt' mode='r' encoding='UTF-8'>
7

code ./
_2

Masuk ke mode layar penuh Keluar dari mode layar penuh

Itu dia, sekarang kita bisa mengakses kata-kata umum dari dua file, dalam satu liner

Menulis file dengan Python, tidak terlalu sulit. Kami membuka file dalam mode tulis menggunakan


print(file1)

# Result
# <_io.TextIOWrapper name='text_one.txt' mode='r' encoding='UTF-8'>
8

Ini memungkinkan kami untuk menulis ke file yang sudah ada atau jika file tersebut tidak ada, itu membuat yang baru dengan jalur file yang ditentukan

Jadi mari kita buka file gabungan kita

code ./
_3

Masuk ke mode layar penuh Keluar dari mode layar penuh

Ingatlah bahwa setiap kali kita membuka file dalam mode tulis, kita harus menutupnya, setelah melakukan operasi yang diinginkan

Sekarang kita akan menulis semua kata umum ke file


print(file1)

# Result
# <_io.TextIOWrapper name='text_one.txt' mode='r' encoding='UTF-8'>
9 yang baru

code ./
_4

Masuk ke mode layar penuh Keluar dari mode layar penuh

Kita perlu menambahkan string koma di akhir setiap kata, sehingga kita dapat membedakan kata-kata di dalam file

Jika Anda menjalankan kode ini, Anda akan mendapatkan hasil yang diinginkan

code ./
_5

Masuk ke mode layar penuh Keluar dari mode layar penuh

Jika Anda memeriksa file

file1 = open("text_oness.txt")

# FileNotFoundError: [Errno 2] No such file or directory: 'text_oness.txt'
_0 baru, Anda akan melihat semua kata umum antara file
file1 = open("text_oness.txt")

# FileNotFoundError: [Errno 2] No such file or directory: 'text_oness.txt'
1 dan
file1 = open("text_oness.txt")

# FileNotFoundError: [Errno 2] No such file or directory: 'text_oness.txt'
2

Selamat 🎉, Anda baru saja membuat algoritme gabungan, dan di dasar algoritme gabungan (Pasti jauh lebih rumit), adalah cara kerja git, untuk membandingkan file kode

Tapi tunggu dulu, kode ini kikuk dan ada banyak bagian di mana kami mengulangi proses yang sama

Jadi mari gunakan kekuatan fungsi, untuk membuat kode kita dapat digunakan kembali dan kode yang lebih dapat ditingkatkan

Pertama mari kita buat fungsi untuk membuka file, dan menangani pengecualian. Fungsi itu akan membutuhkan 2 argumen, yang pertama adalah jalur file, dan yang kedua adalah argumen opsional dengan mode terbuka file

code ./
_6

Masuk ke mode layar penuh Keluar dari mode layar penuh

Kemudian sebuah fungsi yang memungkinkan kita menangkap kata-kata dari sebuah file

code ./
_7

Masuk ke mode layar penuh Keluar dari mode layar penuh

Di sini seperti yang mungkin Anda perhatikan, kami mengambil sebagai parameter jalur file yang akan kami dapatkan kata-katanya, dan mendapatkan penangan file melalui fungsi

file1 = open("text_oness.txt")

# FileNotFoundError: [Errno 2] No such file or directory: 'text_oness.txt'
3, yang baru saja kami buat

Terakhir mari kita buat sebuah fungsi

file1 = open("text_oness.txt")

# FileNotFoundError: [Errno 2] No such file or directory: 'text_oness.txt'
_4, yang akan melakukan operasi untuk mendapatkan dan memotong kata-kata umum, dan menulis kata-kata itu dalam sebuah file

code ./
_8

Masuk ke mode layar penuh Keluar dari mode layar penuh

Di sini kami menggunakan kekuatan

file1 = open("text_oness.txt")

# FileNotFoundError: [Errno 2] No such file or directory: 'text_oness.txt'
_5 dalam fungsi python, yang memungkinkan kami meneruskan banyak nama file ke fungsi tersebut jika kami ingin menggabungkan lebih dari dua

Anda dapat melihat bahwa saya menggunakan for loop untuk mengulangi argumen

file1 = open("text_oness.txt")

# FileNotFoundError: [Errno 2] No such file or directory: 'text_oness.txt'
6. Itu karena kami dapat menerima sejumlah nama file sekarang, dan algoritme penggabungan kami menjadi lebih kuat sekarang

Memadatkan kode kita dalam fungsi main()

Sebagai praktik terbaik dalam python, Anda dapat menggunakan fungsi

file1 = open("text_oness.txt")

# FileNotFoundError: [Errno 2] No such file or directory: 'text_oness.txt'
7, yang akan memanggil dan melakukan operasi apa pun yang dilakukan skrip Anda

code ./
_9

Masuk ke mode layar penuh Keluar dari mode layar penuh

Fungsi utama ini memanggil fungsi gabungan dan mengirimkan variabel file1 dan file2 sebagai parameter. Kami juga menentukan parameter

file1 = open("text_oness.txt")

# FileNotFoundError: [Errno 2] No such file or directory: 'text_oness.txt'
8 yang memberi tahu fungsi penggabungan file mana yang harus ditulisnya

Tapi seperti yang mungkin Anda perhatikan, kami belum memanggil fungsi apa pun, jadi mari kita panggil fungsi utama

file1 = open("text_one.txt)
_0

Masuk ke mode layar penuh Keluar dari mode layar penuh

Variabel

file1 = open("text_oness.txt")

# FileNotFoundError: [Errno 2] No such file or directory: 'text_oness.txt'
_9 layak mendapatkan posting blog lain, tetapi pada dasarnya di sini Anda memberi tahu python

  • Hai bung 🥸, jika ini adalah file python yang Anda jalankan dari terminal, jalankan fungsi
    file1 = open("text_oness.txt")
    
    # FileNotFoundError: [Errno 2] No such file or directory: 'text_oness.txt'
    
    7

Jadi kode terakhir dari algoritma keren ini adalah ini

file1 = open("text_one.txt)
_1

Masuk ke mode layar penuh Keluar dari mode layar penuh

Kesimpulan

Dalam tutorial ini Anda berlatih

  • Penanganan file dengan Python
  • Set dan daftar dengan Python
  • Iterasi dengan for loop
  • Definisi fungsi dan penggunaan
  • Praktik terbaik fungsi utama Python

Jika Anda menemukan kesalahan dalam tutorial ini, jangan ragu untuk menghubungi saya, atau buat permintaan tarik di repo Github

Bagaimana cara membandingkan 2 dokumen Word?

Bandingkan dua versi dokumen .
Buka salah satu dari dua versi dokumen yang ingin Anda bandingkan
Pada menu Tinjau, pilih Bandingkan Dokumen
Di daftar Dokumen asli, pilih dokumen asli
Dalam daftar dokumen yang direvisi, telusuri ke versi dokumen lainnya, lalu pilih OK

Bagaimana cara menemukan Word tertentu dalam file teks menggunakan Python?

Metode 1. Menemukan indeks string dalam file teks menggunakan readline() Dalam metode ini, kita menggunakan fungsi readline(), dan memeriksa dengan find .

Bagaimana cara membandingkan dua teks dengan Python?

Anda dapat membandingkan string dengan Python menggunakan persamaan ( == ) dan perbandingan ( < , > ,. = , . Tidak ada metode khusus untuk membandingkan dua string. Dalam artikel ini, Anda akan mempelajari cara kerja masing-masing operator saat membandingkan string.

Bisakah Anda membandingkan dua dokumen Word secara berdampingan?

Buka kedua file yang ingin Anda bandingkan. Pada tab Tampilan, di grup Jendela, klik Lihat Berdampingan . di grup Jendela pada tab Tampilan.