Mẹo về Hướng dẫn so sánh trong python 2022
Bùi Mạnh Hùng đang tìm kiếm từ khóa Hướng dẫn so sánh trong python được Update vào lúc : 2022-09-24 20:15:28 . Với phương châm chia sẻ Bí kíp Hướng dẫn trong nội dung bài viết một cách Chi Tiết Mới Nhất. Nếu sau khi đọc nội dung bài viết vẫn ko hiểu thì hoàn toàn có thể lại phản hồi ở cuối bài để Admin lý giải và hướng dẫn lại nha.Nội dung chính
- So sánh đồng nhất và kiểm tra hai chuỗi có giống nhau trong Python | toán tử == và !=So sánh lớn nhỏ giữa 2 chuỗi trong python | toán tử <, <=, >, >=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 | toán tử in và not inSo sánh đầu cuối và kiểm tra một chuỗi có khởi đầu hoặc kết thúc bằng một chuỗi chỉ định |
startswith(), endswith() trong PythonSo sánh hai chuỗi mà không phân biết ký tự chữ thường chữ hoa
trong chuỗi | upper(), lower()So sánh 2 chuỗi và lấy ra những phần tử giống nhau trong python | set()So sánh 2 chuỗi và
lấy ra những phần tử rất khác nhau trong python | set()Tổng kết
Hướng dẫn cách so sánh 2 chuỗi trong python. Bạn sẽ học tất cả những phương pháp so sánh 2 chuỗi trong python sau bài học kinh nghiệm tay nghề này.
Chúng ta có 7 phương pháp để so sánh 2 chuỗi trong python như sau:
- Toán tử ==, !=: so sánh và kiểm tra hai chuỗi có giống nhau trong PythonToán tử <, <=,
>, >=: so sánh lớn nhỏ giữa 2 chuỗi trong pythonToán tử in, 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.Phương thức startswith(), endswith(): so sánh đầu cuối và kiểm tra một chuỗi có khởi đầu hoặc kết thúc bằng một chuỗi chỉ địnhPhương thưc upper, lower(): so sánh hai chuỗi mà không phân biết ký tự chữ thường chữ hoa trong chuỗiHàm set(): so sánh 2 chuỗi và lấy ra những phần tử giống
nhau trong pythonHàm set(): so sánh 2 chuỗi và lấy ra những phần tử rất khác nhau trong python
So sánh đồng nhất và kiểm tra hai chuỗi có giống nhau trong Python | toán tử == và !=
Để kiểm tra hai chuỗi có giống nhau trong Python, tất cả chúng ta sử dụng toán tử so sánh bằng ==, và nếu như toàn bộ giá trị của những phần tử trong hai chuỗi đều giống nhau, giá trị True được trả về. Ví dụ:
print('abc' == 'abc')print('abc' == 'def')
Tương tự tất cả chúng ta sử dụng toán tử so sánh khác != để kiểm tra hai chuỗi có rất khác nhau trong Python như sau:
print('abc' != 'abc')print('abc' != 'def')
Lại nữa, những phép so sánh chuỗi gồm có 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 rất khác nhau về ký tự chữ hoa chữ thường thì cũng không được xem là giống nhau.
print('abc' == 'ABC')print('abc' != 'ABC')
Thứ tự của những ký tự trong chuỗi cũng khá được xem xét khi đem đi so sánh. Nếu hai chuỗi giống nhau về ký tự nhưng rất khác nhau về thứ tự những ký tự trong chuỗi thì cũng không được xem là giống nhau.
print('abc' == 'cab')print('abc' != 'bac')
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 sau.
So sánh lớn nhỏ giữa 2 chuỗi trong python | toán tử <, <=, >, >=
Chúng ta sử dụng những toán tử so sánh như <, <=, >, >= để tìm quan hệ lớn nhỏ giữa 2 chuỗi trong python. Và phần tử đầu tiên có mức giá trị rất khác nhau giữa 2 chuỗi sẽ được lấy ra để so sánh.
Ví dụ:
print('a' < 'b')print('aa' <= 'ab')
print('abc' > 'abcd')
print('abc' >= 'abcd')
Khác với so sánh số trong python, tất cả 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 đó, tất cả chúng ta sử dụng những điểm mã unicode (unicode code point) của những ký tự trong chuỗi để so sánh.
Để kiểm tra điểm mã Unicode của một ký tự, tất cả chúng ta sử dụng tới hàm ord() trong python như sau:
print(ord("a"))print(ord("b"))
print(ord("A"))
Khi so sánh lớn nhỏ hai ký tự đơn, tất cả 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ẽ to 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")Tuy nhiên khi so sánh 2 chuỗi ký tự với nhau, tất cả chúng ta không thể đơn thuần so sánh những điểm mã unicode của từng ký tự được. Lúc này, phép so sánh sẽ bắt nguồn từ ký tự đầu tiên trong hai chuỗi, và nếu chúng giống nhau, những ký tự tiếp theo được so sánh cho tới khi xuất hiện một ký tự rấ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 tất cả chuỗi và được dùng để so sánh lớn nhỏ. Ví dụ:
print( "aAaaaaa" < "aaa")print( "a" > "Aaaa")
Ở ví dụ 1, ký tự rất khác nhau đầu tiên trong hai chuỗi là A và a, do đó tuy nhiên 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, tuy nhiên chuỗi bên trái chỉ gồm 1 ký tự, nhưng điểm mã unicode của a lại to hơn A, kết quả là chuỗi bên trái sẽ to 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à, những ký tự viết hoa sẽ LUÔN nhỏ hơn những ký tự chữ thường.
print('Z' < 'z')print('Z' < 'b')
print('B' < 'b')
print('A' < 'b')
Do đó trong trường hợp này tất cả chúng ta tránh việc phải dùng hàm ord() để tìm điểm mã unicode của ký tự nữa, mà hoàn toàn 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 khớp một phần và kiểm tra một chuỗi có nằm trong chuỗi khác trong Python | toán tử in và not in
Chúng ta sử dụng những 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 là không, tất cả 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')print('1' in '234')
trái lại với toán tử in, tất cả 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 là không. Ví dụ để kiểm tra chuỗi x có không nằm trong y hay là không, tất cả 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')
print('1' not in '234')
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 những biểu thức điều kiện của lệnh if hoặc vòng lặp for.
Ví dụ, tất cả 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 là không, tất cả chúng ta hoàn toàn có thể xác định và xóa đi những file ảnh trong thư mục chỉ định như sau:
duoi_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
So sánh đầu cuối và kiểm tra một chuỗi có khởi đầu hoặc kết thúc bằng một chuỗi chỉ định | startswith(), endswith() trong Python
Chúng ta sử dụng những phương thức startswith(), endswith() để so sánh đầu hoặc cuối chuỗi và kiểm tra một chuỗi có khởi đầu hoặc kết thúc bằng một chuỗi khác hay là không trong Python.
Trường hợp bạn muốn kiểm tra một chuỗi có khởi đầu bằng một chuỗi ký tự chỉ định hay là không, hãy dùng phương thức startswith() trong Python như ví dụ sau:
s = 'aaa-bbb-ccc'print(s.startswith('aaa'))
print(s.startswith('bbb'))
trái lại, nếu bạn muốn kiểm tra một chuỗi có kết thúc bằng một chuỗi ký tự chỉ định hay là không, hãy dùng phương thức endswith() trong Python như ví dụ sau:
s = 'aaa-bbb-ccc'print(s.endswith('ccc'))
print(s.endswith('bbb'))
Lại nữa, tất cả chúng ta hoàn toàn có thể chỉ định một tuple chứa những chuỗi ký tự, và sau đó kiểm tra xem chuỗi ban đầu có khởi đầu hoặc kết thúc bằng một trong những chuỗi ký tự trong tuple đó hay là không. Nếu như không còn chuỗi nào khớp thì kết quả False và ngược lại chỉ việc một chuỗi trong tuple khớp thì kết quả True được trả về. Ví dụ:
s = 'aaa-bbb-ccc't = ('aaa' , 'bbb')
print( s.startswith(t))
print( s.endswith(t))
So sánh hai chuỗi mà không phân biết ký tự chữ thường chữ hoa trong chuỗi | upper(), lower()
Trong những phương pháp so sánh chuỗi mà Kiyoshi đã ra mắt ở trên đều có một điểm chung là có sự phân biệt rõ ràng giữa ký tự chữ thường và chữ hoa khi so sánh chuỗi.
Nếu bạn không thích phân biệt chữ thường chữ hoa khi so sánh chuỗi trong python, hãy quy đổi cả hai chuỗi ban đầu về dạng chữ hoa, hoặc chữ thường trước khi đem so sánh chúng.
Lúc này, tất cả chúng ta sẽ cần sử dụng tới hai phương thức quy đổi chữ hoa chữ thường trong python là upper(), lower() trong python.
Ví dụ, tất cả chúng ta chuyển hai chuỗi ban đầu về dạng chữ hoa và đem so sánh chúng, bằng phương pháp dùng lower() như sau:
s1 = 'abcd1's2 = 'ABCD1'
print(s1 == s2)
print(s1.lower() == s2.lower())
Tương tự như khi tất cả chúng ta sử dụng phương thức uppper():
s1 = 'abcd1's2 = 'ABCD1'
print(s1 == s2)
print(s1.uppper() == s2.uppper())
- Xem thêm: Upper() trong Python.Xem thêm:
Lower() trong Python.
So sánh 2 chuỗi và lấy ra những phần tử giống nhau trong python | set()
Trong python không còn một hàm hay phương thức nào giúp tất cả chúng ta hoàn toàn có thể so sánh trực tiếp và lấy ra những phần tử giống nhau giữa hai chuỗi cả.
Để so sánh 2 chuỗi trong python và lấy những phần tử giống nhau, tất cả chúng ta cần chuyển 2 chuỗi đã cho về kiểu set (tập hợp), sau đó mới tìm ra phần tử giống nhau giữa chúng thông qua phép tìm giao hai tập hợp bằng toán tử & trong python.
- Xem thêm: Hàm set() trong python và cách tạo set từ iterableXem thêm:
Tìm giao hai tập hợp trong python
Việc chuyển chuỗi về kiểu set còn tồn tại một tác dụng nữa là giúp tất cả chúng ta xóa những phần tử trùng nhau trong chuỗi python trước khi đem chúng đi so sánh.
Sau đây, tất cả chúng ta sẽ xem ví dụ rõ ràng về so sánh 2 chuỗi trong python và lấy những phần tử giống nhau giữa chúng như sau:
s1 = 'abcde's2 = 'cde'
s3 = 'abcdef'
print( set(s1) & set(s2) )
print( set(s1) & set(s3) )
print(type(set(s1) & set(s3)))
Sau khi thu về set kết quả chứa những phần tử giống nhau giữa 2 chuỗi đã cho, tất cả chúng ta hoàn toàn có thể dùng vòng lặp for để lấy ra những phần tử trong set kết quả. Lưu ý là vì trong set không tồn tại index nên thứ tự lấy những phần tử và in ra màn hình hiển thị hoàn toàn có thể rất khác nhau trong mỗi lần thực thi.
s1 = 'abcde's2 = 'cde'
common_s = set (s1) & set(s2)
for i in common_s:
print(i)
Chúng ta cũng hoàn toàn có thể tìm số phần tử trùng nhau giữa 2 chuỗi python bằng phương pháp sử dụng hàm len() để đếm số phần tử trong set kết quả thu về. Ví dụ:
s1 = 'abcde's2 = 'cde'
commmon_count = len( set(s1) & set(s2) )
print(commmon_count)
- Xem thêm Đếm số phần tử trong set python
Bạn cũng hoàn toàn có thể chuyển set kết quả về kiểu list và thu về một list mới chứa những phần tử rất khác nhau trong 2 chuỗi ban đầu bằng phương pháp sử dụng hàm list() trong python như ví dụ sau:
s1 = 'abcde's2 = 'cde'
common_l = list( set (s1) & set(s2) )
print(common_l[2])
- Xem thêm : Hàm list() và cách tạo list từ iterable trong python
Tương tự khi so sánh 2 chuỗi, bạn cũng có thể so sánh 3 chuỗi hay nhiều chuỗi với nhau và tìm ra các phần tử giống nhau trong python như sau:
s1 = 'abcde's2 = 'cde'
s3 = 'abcdef'
s1_s2_s3 = set(s1) & set(s2) & set(s3)
print(s1_s2_s3)
So sánh 2 chuỗi và lấy ra những phần tử rất khác nhau trong python | set()
Trong python không còn một hàm hay phương thức nào giúp tất cả chúng ta hoàn toàn có thể so sánh trực tiếp và lấy ra những phần tử rất khác nhau giữa hai chuỗi cả.
Để so sánh 2 chuỗi trong python và lấy những phần tử rất khác nhau, tất cả chúng ta cần chuyển 2 chuỗi đã cho về kiểu set (tập hợp), sau đó mới tìm ra phần tử rất khác nhau giữa chúng thông qua phép tìm phần bù giữa hai tập hợp bằng toán tử ^ trong python.
- Xem thêm: Hàm set() trong python và cách tạo set từ iterableXem thêm: Phần bù trong python
Việc chuyển chuỗi về kiểu set còn tồn tại một tác dụng nữa là giúp tất cả chúng ta xóa những phần tử trùng nhau trong chuỗi python trước khi đem chúng đi so sánh.
Sau đây, tất cả chúng ta sẽ xem ví dụ rõ ràng về so sánh 2 chuỗi trong python và lấy những phần tử rất khác nhau giữa chúng như sau:
s1 = 'abcde's2 = 'cde'
s3 = 'abcdef'
print( set(s1) ^ set(s2) )
print( set(s1) ^ set(s3) )
print(type(set(s1) ^ set(s3)))
Sau khi thu về set kết quả chứa những phần tử rất khác nhau giữa 2 chuỗi đã cho, tất cả chúng ta hoàn toàn có thể dùng vòng lặp for để lấy ra những phần tử trong set kết quả. Lưu ý là vì trong set không tồn tại index nên thứ tự lấy những phần tử và in ra màn hình hiển thị hoàn toàn có thể rất khác nhau trong mỗi lần thực thi.
s1 = 'abcde's2 = 'cde'
common_s = set (s1) ^ set(s2)
for i in common_s:
print(i)
Chúng ta cũng hoàn toàn có thể tìm số phần tử rất khác nhau giữa 2 chuỗi python bằng phương pháp sử dụng hàm len() để đếm số phần tử trong set kết quả thu về. Ví dụ:
s1 = 'abcde's2 = 'cde'
commmon_count = len( set(s1) ^ set(s2) )
print(commmon_count)
- Xem thêm
Đếm số phần tử trong set python
Bạn cũng hoàn toàn có thể chuyển set kết quả về kiểu list và thu về một list mới chứa những phần tử rất khác nhau trong 2 chuỗi ban đầu bằng phương pháp sử dụng hàm list() trong python như ví dụ sau:
s1 = 'abcde's2 = 'cde'
common_l = list( set (s1) ^ set(s2) )
print(common_l[1])
- Xem thêm :
Hàm list() và cách tạo list từ iterable 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. Đây đều là những phương pháp rất là cơ bản, nên bạn hãy thực hành và master chúng ngay nhé.
Ngoài những phương pháp cơ bản trên, tất cả chúng ta cũng còn một cách khác để so sánh chuỗi trong python, đó đó đó là sử dụng biểu thức chính quy (Regular expression) trong Python. Phần này hơi khó hiểu chút với những bạn mới khởi đầu, nên Kiyoshi mạn phép sẽ chia sẻ nó trong những nội dung bài viết khác nhé.
Hãy chia sẻ và cùng phủ rộng kiến thức và kỹ năng lập trình Nhật Bản tại Việt Nam!
HOME>> python cơ bản - lập trình python cho người mới khởi đầu>>09. chuỗi trong python
Bài sauĐảo ngược chuỗi trong python
Bài tiếpTách số trong chuỗi python
Tải thêm tài liệu liên quan đến nội dung bài viết Hướng dẫn so sánh trong python programming python Trong Python Len() trong Python