So Sánh Chuỗi Trong Python
Có thể bạn quan tâm
Hướng dẫn cách so sánh chuỗi trong python. Trong lập trình, so sánh chuỗi (strings) là một phần quan trọng của quá trình xử lý dữ liệu. Trong Python, chuỗi là một kiểu dữ liệu cơ bản và chúng ta thường cần so sánh chuỗi để kiểm tra xem chúng có giống nhau hay không. Trong bài viết này, chúng ta sẽ tìm hiểu về cách so sánh chuỗi trong Python, bao gồm so sánh bằng, so sánh không phân biệt hoa thường, và sử dụng các phương thức so sánh chuỗi.
So sánh bằng (Equality)
So sánh chuỗi bằng nhau là một phần quan trọng của xử lý dữ liệu trong Python. Để kiểm tra xem hai chuỗi có bằng nhau hay không, bạn có thể sử dụng toán tử so sánh ==. Ví dụ:
print('abc' == 'abc')##> Trueprint('abc' == 'def')##> False |
Tương tự chúng ta sử dụng toán tử so sánh khác != để kiểm tra hai chuỗi có khác nhau như sau:
print('abc' != 'abc')##> Falseprint('abc' != 'def')##> True |
Lưu ý, các phép so sánh chuỗi bao gồm cả so sánh đồng nhất sẽ phân biệt chữ hoa và chữ thường trong chuỗi. Nếu hai chuỗi giống nhau về ký tự nhưng khác nhau về ký tự chữ hoa chữ thường thì cũng không được coi là giống nhau.
print('abc' == 'ABC')##> Falseprint('abc' != 'ABC')##> True |
Thứ tự của các ký tự trong chuỗi cũng được xem xét khi đem đi so sánh. Nếu hai chuỗi giống nhau về ký tự nhưng khác nhau về thứ tự các ký tự trong chuỗi thì cũng không được coi là giống nhau.
print('abc' == 'cab')##> Falseprint('abc' != 'bac')##> True |
Nếu bạn muốn so sánh hai chuỗi mà không phân biết ký tự chữ thường chữ hoa trong chuỗi, hãy xem tiếp ở phần dưới đây.
So sánh không phân biệt hoa thường
Trong một số trường hợp, bạn có thể muốn so sánh chuỗi mà không phân biệt hoa thường. Điều này có nghĩa rằng “Hello” và “hello” sẽ được coi là giống nhau. Để thực hiện so sánh không phân biệt hoa thường, bạn có thể chuyển đổi cả hai chuỗi về cùng một kiểu chữ cái trước khi so sánh, bằng cách sử dụng phương thức lower() hoặc upper().
Dưới đây là ví dụ sử dụng phương thức lower():
str1 = "Hello"str2 = "hello"if str1.lower() == str2.lower(): print("Chuỗi giống nhau (không phân biệt hoa thường)")else: print("Chuỗi khác nhau") |
Kết quả sẽ là “Chuỗi giống nhau (không phân biệt hoa thường)”.
Tương tự như khi chúng ta sử dụng phương thức upper():
str1 = "Hello"str2 = "hello"if str1.upper() == str2.upper(): print("Chuỗi giống nhau (không phân biệt hoa thường)")else: print("Chuỗi khác nhau") |
- Xem thêm: Upper() trong Python.
- Xem thêm: Lower() trong Python.
So sánh lớn nhỏ
Sử dụng các toán tử so sánh
Chúng ta sử dụng các toán tử so sánh như <, <=, >, >= để tìm mối quan hệ lớn nhỏ giữa 2 chuỗi trong python. Và phần tử đầu tiên có giá trị khác nhau giữa 2 chuỗi sẽ được lấy ra để so sánh.
Ví dụ:
print('a' < 'b')#>> Trueprint('aa' <= 'ab')#>> Trueprint('abc' > 'abcd')#>> Falseprint('abc' >= 'abcd')#>> False |
Nguyên lý so sánh
Khác với so sánh số trong python, chúng ta không thể sử dụng trực tiếp giá trị của chuỗi để so sánh lớn nhỏ giữa chuỗi trong python. Thay vào đó, chúng ta sử dụng các điểm mã unicode (unicode code point) của các ký tự trong chuỗi để so sánh.
Để kiểm tra điểm mã Unicode của một ký tự, chúng ta sử dụng tới hàm ord() trong python như sau:
print(ord("a"))#> 97print(ord("b"))#> 98print(ord("A"))#> 65 |
Khi so sánh lớn nhỏ hai ký tự đơn, chúng ta đơn giản so sánh điểm mã unicode của chúng. Ví dụ, do điểm mã unicode của ký tự a là 97 sẽ lớn hơn của ký tự A à 65 nên phép so sánh sau sẽ cho ra kết quả True:
print( "a" > "A")#>True |
Tuy nhiên khi so sánh 2 chuỗi ký tự với nhau, chúng ta không thể đơn thuần so sánh các điểm mã unicode của từng ký tự được. Lúc này, phép so sánh sẽ bắt đầu từ ký tự đầu tiên trong hai chuỗi, và nếu chúng giống nhau, các ký tự tiếp theo được so sánh cho tới khi xuất hiện một ký tự khác nhau đầu tiên trong hai chuỗi. Khi đó, điểm mã unicode của ký tự này sẽ đại diện cho cả chuỗi và được dùng để so sánh lớn nhỏ. Ví dụ:
print( "aAaaaaa" < "aaa")#>> Trueprint( "a" > "Aaaa")#>> True |
Ở ví dụ 1, ký tự khác nhau đầu tiên trong hai chuỗi là A và a, do đó mặc dù chuỗi bên trái nhiều ký tự hơn chuỗi bên phải nhưng điểm mã unicode của A lại nhỏ hơn a, do đó chuỗi bên trái sẽ nhỏ hơn chuỗi bên phải.Tương tự ở ví dụ 2, mặc dù chuỗi bên trái chỉ gồm 1 ký tự, nhưng điểm mã unicode của a lại lớn hơn A, kết quả là chuỗi bên trái sẽ lớn hơn chuỗi bên phải.
Một điều đặc biệt khi so sánh lớn nhỏ giữa 2 chuỗi trong python là, các ký tự viết hoa sẽ LUÔN nhỏ hơn các ký tự chữ thường.
print('Z' < 'z')# Trueprint('Z' < 'b')# Trueprint('B' < 'b')# Trueprint('A' < 'b')# True |
Do đó trong trường hợp này chúng ta không cần phải dùng hàm ord() để tìm điểm mã unicode của ký tự nữa, mà có thể dùng quy luật ở trên để so sánh lớn nhỏ giữa ký tự viết thường và viết hoa trong Python.
So sánh chuỗi theo từng ký tự
Nếu bạn cần so sánh chuỗi từng ký tự một, bạn có thể sử dụng vòng lặp và chỉ mục để duyệt qua từng ký tự trong chuỗi. Dưới đây là một ví dụ:
str1 = "apple"str2 = "banana"min_length = min(len(str1), len(str2))equal = Truefor i in range(min_length): if str1[i] != str2[i]: equal = False breakif equal: if len(str1) == len(str2): print("Hai chuỗi giống nhau") else: print("Hai chuỗi khác nhau")else: print("Hai chuỗi khác nhau") |
So sánh chuỗi bằng biểu thức chính quy (Regular Expressions)
Khi bạn cần thực hiện so sánh phức tạp hơn hoặc tìm kiếm chuỗi con trong chuỗi gốc dựa trên một mẫu cụ thể, bạn có thể sử dụng biểu thức chính quy (regular expressions). Python cung cấp thư viện re để làm việc với biểu thức chính quy.
import repattern = r"apple"text = "I have an apple and a banana"match = re.search(pattern, text)if match: print("Tìm thấy chuỗi 'apple' trong văn bản") |
Sử dụng các phương thức so sánh chuỗi
Python cung cấp nhiều phương thức để so sánh chuỗi. Dưới đây là một số ví dụ:
str.startswith() và str.endswith(): Để kiểm tra xem một chuỗi có bắt đầu hoặc kết thúc bằng một chuỗi con cụ thể hay không.
Copystr = "Hello, World"if str.startswith("Hello"): print("Chuỗi bắt đầu bằng 'Hello'")if str.endswith("World"): print("Chuỗi kết thúc bằng 'World'") str.find() và str.rfind(): Để tìm vị trí đầu tiên hoặc vị trí cuối cùng của một chuỗi con trong chuỗi gốc.
Copystr = "Hello, World"position = str.find("World")if position != -1: print("Chuỗi con 'World' được tìm thấy tại vị trí", position) str.count(): Để đếm số lần xuất hiện của một chuỗi con trong chuỗi gốc.
Copystr = "The quick brown fox jumps over the lazy dog"count = str.count("the")print("Số lần xuất hiện của 'the' trong chuỗi:", count) str.isalpha() và str.isdigit(): Để kiểm tra xem chuỗi chỉ chứa ký tự chữ cái hoặc chữ số hay không.
Copystr1 = "Hello"str2 = "12345"if str1.isalpha(): print("str1 chỉ chứa chữ cái")if str2.isdigit(): print("str2 chỉ chứa chữ số")
So sánh khớp một phần
Chúng ta sử dụng các toán tử in và not in để so sánh khớp một phần và kiểm tra một chuỗi có nằm trong chuỗi khác trong Python.
Ví dụ để kiểm tra chuỗi x có nằm trong y hay không, chúng ta viết x in y, và nếu x có nằm trong y thì kết quả True, và nếu x không nằm trong y thì kết quả False sẽ trả về.
Ví dụ:
print('cc' in 'bb-cc-dd')#>> Trueprint('1' in '234')#>> False |
Ngược lại với toán tử in, chúng ta dùng toán tử not in để kiểm tra một chuỗi có KHÔNG nằm trong chuỗi khác hay không. Ví dụ để kiểm tra chuỗi x có không nằm trong y hay không, chúng ta viết x not in y, và nếu x có nằm trong y thì kết quả False, và nếu x không nằm trong y thì kết quả True sẽ trả về.Ví dụ:
print('cc' not in 'bb-cc-dd')#>> Falseprint('1' not in '234')#>> True |
Chúng ta hay sử dụng toán tử kiểm tra một chuỗi có nằm trong chuỗi khác trong các biểu thức điều kiện của lệnh if hoặc vòng lặp for.Ví dụ, chúng ta viết một chương trình xóa ảnh JPG hoặc PNG từ trong một thư mục. Bằng cách lấy đuôi file và kiểm tra đuôi file có chứa chuỗi JPG hoặc PNG hay không, chúng ta có thể xác định và xóa đi các file ảnh trong thư mục chỉ định như sau:
import osduoi_file = "JPG_PNG"src = "data/picture"for file in os.listdir(src): file_ext = os.path.splitext(file) if file_ext in duoi_file: os.remove(os.path.join(src, file)) |
- Xem thêm : Xử lý file trong Python
Tổng kết
Trên đây Kiyoshi đã hướng dẫn bạn về cách so sánh chuỗi trong python rồi. So sánh chuỗi là một phần quan trọng trong lập trình Python và là một phần quan trọng của quá trình xử lý dữ liệu. Chúng ta đã tìm hiểu cách thực hiện so sánh bằng, so sánh không phân biệt hoa thường, và sử dụng các phương thức và phương pháp so sánh chuỗi. Việc nắm vững cách làm này giúp bạn xử lý dữ liệu chuỗi hiệu quả và thực hiện các tác vụ so sánh phức tạp hơn khi cần thiết trong ứng dụng của mình.
URL Link
https://laptrinhcanban.com/python/nhap-mon-lap-trinh-python/thao-tac-voi-chuoi-string-trong-python/so-sanh-chuoi-trong-python/
Từ khóa » Xét Xem Trong Xâu Có K Kí Tự Kề Nhau Mà Như Nhau Hay Không Python
-
Nhập 1 Xâu Kí Tự. Xét Xem Trong Xâu Có K Kí Tự E Kề Nhau Mà Như ...
-
Chuỗi Trong Python (Kiểu Xâu String Trong Python) - O₂ Education
-
Giải Các Bài Toán Về Xâu Kí Tự
-
Bài Tập Xâu Cơ Bản Trong Pascal - Tài Liệu Text - 123doc
-
Đếm Các Từ Xuất Hiện Trong Chuỗi Python - Lập Trình Không Khó
-
Kiểm Tra Và Lấy Phần Tử Trùng Nhau Trong List Python
-
Xác định Xem Có Hai Ký Tự Giống Nhau Liền Kề Với Nhau Không - HelpEx
-
Rút Gọn Xâu Có Các Kí Tự Trùng??? [Archive] - Diễn Đàn Tin Học
-
Viết Chương Trình đếm Các Loại Ký Tự Từ Xâu Nhập Từ Bàn Phím In Kết ...
-
Cùng ôn Lại Những Thuật Toán Sắp Xếp Và Xây Dựng Hàm Sort Sử ...
-
Một Số Bài Toán Quy Hoạch động điển Hình - VNOI
-
Giới Thiệu Về Các Hàm Chuỗi Trong Python 3
-
SGK TIN PYPHON - Tải Xuống Sách | 1-50 Các Trang | PubHTML5
-
Chuỗi (String) Trong Python - Học Lập Trình Python - Viettuts