Kiểu chuỗi ký tự (string) trong Python
Thao tác với chuỗi ký tự thường rất hay được sử dụng trong Python. Có khá nhiều bài toán hay ho áp dụng các giải thuật để thao tác với chuỗi ký tự. Hôm nay chúng ta sẽ cùng nhau tìm hiểu rõ hơn về kiểu chuỗi ký tự nhé.
Nội dung của bài
Giới thiệu về kiểu String
Kiểu string được biểu diễn đa dạng trong Python, như đã nói ở bài kiểu dữ liệu trong Python. Chúng ta có thể sử dụng như sau:
greeting = "Hello World!"
greeting1 = 'Hello World'
greeting2 = '''Hello World'''
greeting3 = """Hello World"""
Ngoài ra chúng ta có thể sử dụng cả nháy đơn và nháy kép: greeting4 = ‘Hello “World!”‘. Nếu muốn trình bày một đoạn văn bản có định dạng: I am “Bob” chúng ta có thể khai báo như sau: “I am \”Bob\””. Tương tự với I am ‘Bob’ chúng ta khai báo: ‘I am \’Bob\”. Ở đây \’ và \” được gọi là escape character biểu diễn ký tự ‘ và “.
Escape Character hay được sử dụng trong Python
Escape Character | Mô tả |
\\ | Biểu diễn ký tự \, ví dụ print(“a\\b”) kết quả trả ra là a\b |
\n | Ký tự xuống dòng, ví dụ: print(“Hello \nPython”), kết quả trả về là: Hello Python |
\r | Di chuyển con trỏ về đầu dòng, ví dụ: print(“Bob! \rHello”), kết quả trả về là: Hello |
\t | Biểu diễn tab, ví dụ: print(“Hello\tPython!”), kết quả trả về là: Hello Python! |
\b | Lùi lại 1 dấu space, ví dụ print(“Hello \bPython”), kết quả trả về là: HelloPython |
\ooo | Biểu diễn ký tự dạng cơ số 8, ví dụ: print(“”\110\145\154\154\157”), kết quả trả về là: Hello |
\xhh | Biểu diễn ký tự cơ số 16, ví dụ: print(“\x48\x65\x6c\x6c\x6f”), kết quả trả về là: Hello |
Muốn bỏ qua các escape character chúng ta có thể đặt r hoặc R ở trước string, để trình thông dịch hiểu là chúng ta muốn bỏ tác dụng của escape character giữ nguyên string như khai báo (raw string).
Ví dụ:
print(r'Hello \nWorld!')
Hello \nWorld!
Các phép toán trên kiểu string
Trong Python, có một số toán tử đặc biệt dưới đây:
Toán tử | Mô tả | Ví dụ |
---|---|---|
+ | Nối (concatenate) 2 string, tạo thành một string mới. | “Hello” +”Python” Kết quả trả về: “Hello Python” |
* | Tạo một string mới bằng cách nối (concatenate) nhiều lần bản copy của cùng môt string. | “Hello”*2 Kết quả trả về: “HelloHello” |
[] | Trả về ký tự tại vị trí cho bởi chỉ số. | a = “Hello” a[1] ==> “e” |
[ : ] | Trả về một chuỗi con chứa các ký tự cho bởi phạm vi (range) | a = “Hello” a[1:4] ==> “ell” a[1: ] ==> “ello” |
in | Trả về True nếu ký tự tồn tại trong string đã cho. | a = “Hello” ‘H’ in a ==> True |
not in | Trả về True nếu ký tự không tồn tại trong string đã cho. | a = “Hello” ‘M’ not in a ==> True |
r/R | Giữ nguyên string và bỏ qua tác dụng của escape character | Tham khảo phần trên. |
% | Định dạng string | Xem rõ hơn ở phần dưới. |
Toán tử định dạng string (String Formatting Operator)
Một trong những điểm thú vị nhất trong Python đó là toán tử định dạng string %. Hãy xem ví dụ dưới đây
print("My name is %s and weight is %d kg!" % ('Bob', 65))
My name is Bob and weight is 65 kg!
Danh sách ký tự định dạng trong Python
Ký tự định dạng | Mô tả |
---|---|
%c | Ký tự, ví dụ: print(“abccb%c” % (‘a’)), kết quả trả về là abccba |
%s | Chuỗi, có thể xem ví dụ bên trên |
%i | Số nguyên có dấu |
%d | Số nguyên có dấu |
%u | Số nguyên không dấu |
%o | Số nguyên cơ số 8 |
%x, %X | Số nguyên cơ số 16 |
%e % E | Biễu diễn dạng khoa học |
%f | Số thực |
Ngoài ra chúng ta cũng có thể format string theo 2 cách dưới đây. Đầu tiên hãy thử sử dụng hàm .format() như ví dụ dưới đây
print("My name is {1} and weight is {0} kg!".format(20, "Bob"))
print("My name is {0} and weight is {1} kg!".format("Bob", 20))
Khi sử dụng hàm format() chúng ta sẽ tạo ra các placeholder có thứ tự bắt đầu từ 0.
Python version 3.6 trở nên cung cấp cho chúng ta một phương thức nữa như sau:
name, weight = "Bob đẹp trai", 65
print(f"My name is {name} and weight is {weight} kg!")
My name is Bob đẹp trai and weight is 65 kg!
Chúng ta sử dụng ký tự f ở đầu chuỗi các giá trị muốn đưa vào sẽ đặt trong cặp ký tự {}
Phương thức xử lý chuỗi trong Python
Methods | Mô tả | Cách dùng |
capitalize() | Viết hoa các chữ cái đầu tiên của từ đầu tiên, các từ còn lại viết thường. | >>>greeting = “hello world” >>>greeting.capitalize() ‘Hello world’ |
center(width, fillchar) | Nếu string có độ dài nhỏ hơn width thì sẽ thêm vào 2 đầu của string các kỹ tự fillchar, mặc định fillchar là một dấu cách | >>>greeting = “hello world” >>> greeting.center(12, ‘-‘) hello world- >>>greeting.center(13, ‘-‘) -hello world- |
count(str, begin, end=len(string)) | Tìm số lần xuất hiện của một ký tự hoặc một chuỗi nhỏ trong chuỗi lớn, có thể định nghĩa vị trí bắt đầu và kết thúc. | >>>greeting = “hello world” >>>greeting.count(“l”) 3 |
upper() | Chuyển tất cả các ký tự về dạng ký tự hoa | >>>greeting = “Hello World!” >>>greeting.upper() HELLO WORLD! |
lower() | Chuyển tất cả các ký tự về dạng ký tự thường | >>>greeting = “Hello World!” >>>greeting.upper() hello world! |
title() | Viết hoa ký tự đầu tiên của mỗi từ | >>>greeting = “hello world” >>>greeting.title() Hello World |
lstrip() | Cắt khoảng trống ở lề trái của string | >>>greeting = ” hello world “ >>>greeting.lstrip() ‘hello world ‘ |
rstrip() | Cắt khoảng trống ở lề phải của string | >>>greeting = ” hello world “ >>>greeting.rstrip() ‘ hello world’ |
strip() | Cắt khoảng trống ở hai đầu của string (thực hiện 2 lệnh rstrip() và lstrip() ) | >>>greeting = ” hello world “ >>>greeting.strip() ‘hello world’ |
find(str, begin=0, end = len(string)) | Tìm chuỗi con trong chuỗi lớn, trả ra vị trí của chuỗi con nếu tồn tại, trả ra -1 nếu không tồn tại. | >>>greeting = “hello world” >>>greeting.find(‘el’) 1 >>>greeting.find(‘lol’) -1 |
index(str, begin=0, end = len(string)) | Tương tự như find, nhưng sẽ trả ra ngoại lệ nếu chuỗi con không tồn tại. | >>>greeting = “hello world” >>>greeting.index(“el0”) Traceback (most recent call last): File “”, line 1, in ValueError: substring not found |
split() | Cắt chuỗi ra các từ | >>>greeting = “Hello World!” >>>greeting.split() [‘Hello’, ‘World!’] |
Kết luận
Kiểu string trong Python rất thú vị và nhiều phương thức có sẵn, giúp chúng ta dễ dàng xử lý các bài toán liên quan đến string. Hy vọng các bạn sẽ thực hành nhiều và đừng quên chia sẻ, đặt câu hỏi nếu còn điều gì cần làm rõ nhé.