Bagaimana Anda membandingkan dua string untuk mengembalikan perbedaan dalam python?

Dalam Python, string adalah urutan karakter, yang secara efektif disimpan dalam memori sebagai objek. Setiap objek dapat diidentifikasi menggunakan metode id(), seperti yang dapat Anda lihat di bawah. Python mencoba menggunakan kembali objek dalam memori yang memiliki nilai yang sama, yang juga membuat pembandingan objek menjadi sangat cepat di Python

$ python
Python 3.9.0 (v3.9.0:9cf6752276, Oct  5 2020, 11:29:23) 
[Clang 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> a = "abc"
>>> b = "abc"
>>> c = "def"
>>> print (id(a), id(b), id(c))
(139949123041320, 139949123041320, 139949122390576)
>>> quit()

Untuk membandingkan string, Python menawarkan beberapa operator berbeda untuk melakukannya. Pertama, kami akan menjelaskannya secara lebih rinci di bawah ini. Kedua, kita akan membahas modul string dan

$ python3 comparing-strings.py
comparing Berlin with Lausanne: False
comparing Paris with Lausanne: False
comparing Lausanne with Lausanne: True
0, yang berisi metode untuk menangani kecocokan yang tidak peka huruf besar kecil dan tidak tepat. Ketiga, untuk menangani string multi-baris, modul difflib cukup berguna. Sejumlah contoh akan membantu Anda memahami cara menggunakannya

Bandingkan String dengan The == dan. = Operator

Sebagai operator perbandingan dasar, Anda ingin menggunakan

$ python3 comparing-strings.py
comparing Berlin with Lausanne: False
comparing Paris with Lausanne: False
comparing Lausanne with Lausanne: True
1 dan
$ python3 comparing-strings.py
comparing Berlin with Lausanne: False
comparing Paris with Lausanne: False
comparing Lausanne with Lausanne: True
2. Mereka bekerja dengan cara yang persis sama dengan nilai integer dan float. Operator
$ python3 comparing-strings.py
comparing Berlin with Lausanne: False
comparing Paris with Lausanne: False
comparing Lausanne with Lausanne: True
1 mengembalikan
$ python3 comparing-strings.py
comparing Berlin with Lausanne: False
comparing Paris with Lausanne: False
comparing Lausanne with Lausanne: True
4 jika ada pencocokan persis, jika tidak
$ python3 comparing-strings.py
comparing Berlin with Lausanne: False
comparing Paris with Lausanne: False
comparing Lausanne with Lausanne: True
5 akan dikembalikan. Sebaliknya, operator
$ python3 comparing-strings.py
comparing Berlin with Lausanne: False
comparing Paris with Lausanne: False
comparing Lausanne with Lausanne: True
2 mengembalikan
$ python3 comparing-strings.py
comparing Berlin with Lausanne: False
comparing Paris with Lausanne: False
comparing Lausanne with Lausanne: True
4 jika tidak ada kecocokan dan mengembalikan
$ python3 comparing-strings.py
comparing Berlin with Lausanne: False
comparing Paris with Lausanne: False
comparing Lausanne with Lausanne: True
5. Listing 1 menunjukkan hal ini

Dalam loop

$ python3 comparing-strings.py
comparing Berlin with Lausanne: False
comparing Paris with Lausanne: False
comparing Lausanne with Lausanne: True
_9, string yang berisi nama kota Swiss "Lausanne" dibandingkan dengan entri dari daftar tempat lain, dan hasil perbandingan dicetak di stdout

Daftar 1

Menjalankan skrip Python dari atas hasilnya adalah sebagai berikut

$ python3 comparing-strings.py
comparing Berlin with Lausanne: False
comparing Paris with Lausanne: False
comparing Lausanne with Lausanne: True
_

$ python3 comparing-strings.py comparing Berlin with Lausanne: False comparing Paris with Lausanne: False comparing Lausanne with Lausanne: True 1 dan >>> a = 'hello' >>> b = 'hello' >>> c = 'world' >>> a is b True >>> a is c False >>> id(a) 140666888153840 >>> id(b) 140666888153840 >>> 1 Operator

Python memiliki dua operator perbandingan

$ python3 comparing-strings.py
comparing Berlin with Lausanne: False
comparing Paris with Lausanne: False
comparing Lausanne with Lausanne: True
_1 dan
>>> a = 'hello'
>>> b = 'hello'
>>> c = 'world'
>>> a is b
True
>>> a is c
False
>>> id(a)
140666888153840
>>> id(b)
140666888153840
>>> 
1. Pada pandangan pertama mereka tampak sama, tetapi sebenarnya tidak

$ python3 comparing-strings.py
comparing Berlin with Lausanne: False
comparing Paris with Lausanne: False
comparing Lausanne with Lausanne: True
1 membandingkan dua variabel berdasarkan nilai yang mereka wakili. Sebaliknya, operator
>>> a = 'hello'
>>> b = 'hello'
>>> c = 'world'
>>> a is b
True
>>> a is c
False
>>> id(a)
140666888153840
>>> id(b)
140666888153840
>>> 
_1 membandingkan dua variabel berdasarkan ID objek di memori

John (Doe) dan John (Moe) keduanya disebut John. Jika kita dapat mereduksinya menjadi hanya nama mereka, nilainya akan sama, tetapi masih dua orang yang berbeda secara kualitatif

Contoh selanjutnya menunjukkan bahwa untuk tiga variabel dengan nilai string. Kedua variabel

>>> a = 'hello'
>>> b = 'hello'
>>> c = 'world'
>>> a is b
True
>>> a is c
False
>>> id(a)
140666888153840
>>> id(b)
140666888153840
>>> 
6 dan
>>> a = 'hello'
>>> b = 'hello'
>>> c = 'world'
>>> a is b
True
>>> a is c
False
>>> id(a)
140666888153840
>>> id(b)
140666888153840
>>> 
7 memiliki nilai yang sama, dan Python merujuk ke objek yang sama untuk meminimalkan penggunaan memori

Ini dilakukan untuk tipe dan string sederhana secara default, tetapi tidak untuk objek lain

>>> a = 'hello'
>>> b = 'hello'
>>> c = 'world'
>>> a is b
True
>>> a is c
False
>>> id(a)
140666888153840
>>> id(b)
140666888153840
>>> 

Segera setelah nilainya berubah, Python akan mengembalikan objek dan menetapkan variabel. Dalam cuplikan kode berikutnya

>>> a = 'hello'
>>> b = 'hello'
>>> c = 'world'
>>> a is b
True
>>> a is c
False
>>> id(a)
140666888153840
>>> id(b)
140666888153840
>>> 
_7 mendapatkan nilai 2, dan selanjutnya
>>> a = 'hello'
>>> b = 'hello'
>>> c = 'world'
>>> a is b
True
>>> a is c
False
>>> id(a)
140666888153840
>>> id(b)
140666888153840
>>> 
7 dan
>>> b = 'world'
>>> id(b)
140666888154416
>>> id(c)
140666888154416
0 merujuk ke objek yang sama

>>> b = 'world'
>>> id(b)
140666888154416
>>> id(c)
140666888154416

Lebih Banyak Operator Perbandingan

Untuk perbandingan mengenai urutan leksikografis, Anda dapat menggunakan operator perbandingan

>>> b = 'world'
>>> id(b)
140666888154416
>>> id(c)
140666888154416
1,
>>> b = 'world'
>>> id(b)
140666888154416
>>> id(c)
140666888154416
2,
>>> b = 'world'
>>> id(b)
140666888154416
>>> id(c)
140666888154416
3, dan
>>> b = 'world'
>>> id(b)
140666888154416
>>> id(c)
140666888154416
4. Perbandingan itu sendiri dilakukan karakter demi karakter. Urutannya tergantung pada urutan karakter dalam alfabet. Urutan ini bergantung pada tabel karakter yang digunakan pada mesin Anda saat mengeksekusi kode Python

Ingatlah bahwa urutan peka huruf besar-kecil. Sebagai contoh untuk abjad Latin, "Bus" muncul sebelum "bus". Daftar 2 menunjukkan bagaimana operator pembanding ini bekerja dalam praktiknya

Daftar 2

Menjalankan skrip Python dari atas hasilnya adalah sebagai berikut

$ python3 comparing-strings-order.py
Berlin comes before Lausanne
Paris comes after Lausanne
Lausanne is equal to Lausanne

Perbandingan String Case-Insensitive

Contoh sebelumnya berfokus pada pencocokan tepat antara string. Untuk mengizinkan perbandingan case-insensitive Python menawarkan metode string khusus seperti

>>> b = 'world'
>>> id(b)
140666888154416
>>> id(c)
140666888154416
5 dan
>>> b = 'world'
>>> id(b)
140666888154416
>>> id(c)
140666888154416
6. Keduanya tersedia langsung sebagai metode dari objek string yang sesuai

>>> b = 'world'
>>> id(b)
140666888154416
>>> id(c)
140666888154416
_5 mengubah seluruh string menjadi huruf besar, dan
>>> b = 'world'
>>> id(b)
140666888154416
>>> id(c)
140666888154416
6 masing-masing menjadi huruf kecil. Berdasarkan Daftar 1, daftar berikutnya menunjukkan cara menggunakan metode
>>> b = 'world'
>>> id(b)
140666888154416
>>> id(c)
140666888154416
6

Lihat panduan praktis dan praktis kami untuk mempelajari Git, dengan praktik terbaik, standar yang diterima industri, dan menyertakan lembar contekan. Hentikan perintah Googling Git dan benar-benar pelajari itu

Daftar 3

Outputnya adalah sebagai berikut

$ python3 comparing-strings-case-insensitive.py
comparing Berlin with lausANne: False
comparing Paris with lausANne: False
comparing Lausanne with lausANne: True

Bandingkan String Menggunakan Ekspresi Reguler (RegEx)

Ekspresi Reguler - atau singkatnya "regex" - menentukan pola karakter tertentu

Untuk memanfaatkan mekanisme ini di Python, impor modul

$ python3 comparing-strings.py
comparing Berlin with Lausanne: False
comparing Paris with Lausanne: False
comparing Lausanne with Lausanne: True
0 terlebih dahulu dan tentukan pola tertentu, selanjutnya. Sekali lagi, contoh berikut didasarkan pada Listing 1. Pola pencarian cocok dengan "bay", dan dimulai dengan huruf kecil atau huruf besar. Tepatnya, kode Python berikut menemukan semua string di mana pola pencarian terjadi tidak peduli di mana posisi string - di awal, atau di tengah, atau di akhir

Daftar 4

Outputnya adalah sebagai berikut, dan mencocokkan "Bayswater", "Table Bay", dan "Bombay" dari daftar tempat

$ python3 comparing-strings-re.py
Bayswater matches the search pattern
Table Bay matches the search pattern
Bombay matches the search pattern

Perbandingan Multi-Baris dan Daftar

Sejauh ini perbandingan kami hanya pada beberapa kata. Menggunakan modul

$ python3 comparing-strings-order.py
Berlin comes before Lausanne
Paris comes after Lausanne
Lausanne is equal to Lausanne
1 Python juga menawarkan cara untuk membandingkan string multi-baris, dan seluruh daftar kata. Output dapat dikonfigurasi sesuai dengan berbagai format alat diff

Contoh berikutnya (Listing 5) membandingkan dua string multi-baris baris demi baris, dan menampilkan penghapusan serta penambahan. Setelah inisialisasi objek

$ python3 comparing-strings-order.py
Berlin comes before Lausanne
Paris comes after Lausanne
Lausanne is equal to Lausanne
_2 di baris 12, perbandingan dibuat menggunakan metode
$ python3 comparing-strings-order.py
Berlin comes before Lausanne
Paris comes after Lausanne
Lausanne is equal to Lausanne
3 di baris 15. Hasilnya dicetak pada keluaran standar

Menjalankan skrip membuat output seperti yang terlihat di bawah ini. Baris dengan penghapusan ditandai dengan

$ python3 comparing-strings-order.py
Berlin comes before Lausanne
Paris comes after Lausanne
Lausanne is equal to Lausanne
4 tanda sedangkan baris dengan tambahan dimulai dengan tanda
$ python3 comparing-strings-order.py
Berlin comes before Lausanne
Paris comes after Lausanne
Lausanne is equal to Lausanne
5. Selanjutnya, baris dengan perubahan dimulai dengan tanda tanya. Perubahan ditunjukkan dengan menggunakan tanda
$ python3 comparing-strings-order.py
Berlin comes before Lausanne
Paris comes after Lausanne
Lausanne is equal to Lausanne
_6 pada posisi yang sesuai. Garis tanpa indikator tetap sama

$ python comparing-strings-difflib.py
  About the IIS
  
- IIS 8.5 has several improvements related
?  ^^^^^^

+ It has several improvements related
?  ^

- to performance in large-scale scenarios, such
?                                        ^^^^^^

+ to performance in large-scale scenarios.
?                                        ^

- as those used by commercial hosting providers and Microsoft's
- own cloud offerings.

Kesimpulan

Pada artikel ini Anda telah mempelajari berbagai cara untuk membandingkan string dengan Python. Kami harap ikhtisar ini membantu Anda memprogram secara efektif dalam kehidupan pengembang Anda

Bagaimana Anda menemukan perbedaan antara dua string?

StringUtils. difference() mengembalikan perbedaan antara dua string, mengembalikan bagian dari string kedua, yang mulai berbeda dari yang pertama. StringUtils. indexOfDifference() mengembalikan indeks di mana string kedua mulai menyimpang dari yang pertama.

Bagaimana cara membandingkan string dengan string yang berbeda?

Fungsi strcmp() , digunakan untuk membandingkan string (str1,str2). String str1 dan str2 akan dibandingkan menggunakan fungsi ini. Jika fungsi mengembalikan nilai 0, itu menandakan bahwa string sama jika tidak, string tidak sama.

Bagaimana Anda membandingkan string dalam contoh Python?

Ini adalah fungsi ajaib yang didefinisikan dalam kelas string dan membandingkan dua string untuk mengembalikan True jika sama atau Fale jika tidak. Contoh. s1 = 'String' s2 = 'String' s3 = 'string' # case sensitive sama dengan periksa apakah s1 == s2. print('s1 dan s2 sama dengan .

Bagaimana Anda membandingkan dua string dalam kondisi if di Python?

Cara Membandingkan String Menggunakan . The