Thông báo: Download 4 khóa học Python từ cơ bản đến nâng cao tại đây.
Kiểu dữ liệu String trong Python
Trong bài này chúng ta sẽ tìm hiểu kiểu dữ liệu String trong Python, đây là kiểu chuỗi, được dùng để lưu trữ các chuỗi kí tự trong Python.
Mình sẽ hướng dẫn các bạn cách tạo, định dạng, sửa đổi và xóa các chuỗi trong Python. Ngoài ra, bạn sẽ được giới thiệu các thao tác và chức năng liên quan đến chuỗi.
1. Kiểu dữ liệu string trong Python là gì?
Một chuỗi là một dãy các ký tự được sắp xếp với nhau, một ký tự đơn giản là một biểu tượng và máy tính có thể đọc hiểu được ký tự đó thông qua mã máy ASCII.
Máy tính không hiểu ý nghĩa của các ký tự như con người mà chúng sẽ hiểu sẽ chuyển sang kiểu nhị phân (binary). Mặc dù bạn có thể thấy các ký tự trên màn hình của mình, nhưng bên trong nó được lưu trữ và thao tác dưới dạng kết hợp của 0 và 1.
Bài viết này được đăng tại [free tuts .net]
Việc chuyển đổi từ ký tự thành số được gọi là mã hóa và quá trình ngược lại gọi là giải mã. ASCII và Unicode là một số dạng mã hóa được sử dụng phổ biến.
Cú pháp tạo string trong Python
Chuỗi có thể được tạo bằng cách đặt các ký tự bên trong cặp nháy đơn hoặc nháy kép. Nếu bạn muốn viết chuỗi trên nhiều dòng thì phải sử dụng ba dấu nháy, cách này thường được dùng để tạo docstring.
# Tất cả những ví dụ dưới đây là tương đương với nhau. # Dùng nháy đơn my_string = 'Xin chào Freetuts.net!' print(my_string) # Dùng nháy kép my_string = "Xin chào Freetuts.net!" print(my_string) # Dùng ba nháy đơn trên nhiều dòng my_string = '''Xin chào Freetuts.net!''' print(my_string) # Dùng ba nháy kép trên nhiều dòng my_string = """Xin chào Freetuts.net""" print(my_string)
Chạy lên kết quả sẽ như sau:
Xin chào Freetuts.net! Xin chào Freetuts.net! Xin chào Freetuts.net! Xin chào Freetuts.net
Ví dụ trên là một vài cách tạo chuỗi thông thường với nháy đơn và nháy kép,
Truy cập các ký tự của chuỗi string trong Python
String được xem như là một list các ký tự nên bạn có thể truy cập đến các ký tự thông qua chỉ mục index của nó.
Chỉ mục bắt đầu từ 0, và nếu bạn cố gắng truy cập một ký tự nằm ngoài phạm vi chỉ mục thì sẽ xuất hiện lỗi IndexError.
Chỉ mục phải là một số nguyên, không thể sử dụng float hoặc các loại khác vì điều này sẽ dẫn đến TypeError.
Chỉ số -1
đề cập đến phần tử cuối cùng, -2
cho phần tử cuối cùng thứ hai, .. (đây là cách tính ngược của chuỗi).
Chúng ta có thể truy cập một loạt các phần tử trong một chuỗi bằng cách sử dụng toán tử slicing (dấu hai chấm).
str = 'freetuts.net' print('str = ', str) # Ký tự đầu tiên print('str[0] = ', str[0]) # Ký tự cuối cùng print('str[-1] = ', str[-1]) #Lấy các kí tự thứ 2 đến thứ 6 print('str[1:5] = ', str[1:5]) # Lấy các kí tự từ thứ 6 đến ky tự thứ 3 tính từ cuối chuỗi print('str[5:-2] = ', str[5:-2])
Chạy chương trình này sẽ cho kết quả như sau:
str = freetuts.net str[0] = f str[-1] = t str[1:5] = reet str[5:-2] = uts.n
Nhưng nếu bạn cố gắng truy cập đến một phần tử không tồn tại, thì sẽ báo lỗi như ví dụ dưới đây.
# index must be in range >>> my_string[15] ... IndexError: string index out of range # index must be an integer >>> my_string[1.5] ... TypeError: string indices must be integers
Thay đổi và xóa chuỗi string trong Python
Để thay đổi chuỗi thì bạn có thể sử dụng chỉ mục index ... điều này là sai nhé các bạn. Chuỗi là bất biến nên bạn không thể thay đổi chuỗi, chỉ được phép gán một chuỗi khác vào biến.
Ví dụ mình thay đổi ký tự thứ 2 trong chuỗi.
# Thử thay đổi ký tự thứ 2 thành ký tự khác str = 'freetuts.net' str[1] = "A"
Thì nhận được kết quả lỗi như sau:
Chúng ta không thể xóa một ký tự trong chuỗi nhưng có thể xóa hoàn toàn chuỗi bằng cách sử dụng từ khóa del
, đây là từ khóa được sử dụng rất nhiều từ các bài học trước tới giờ.
str = 'freetuts.net' # Lệnh này sai, sẽ bị lỗi del(str[1]) # Lệnh này đúng, nó xóa luôn biến str del(str) # Vì vậy khi in giá trị của str thì không tồn tại biến này print(str)
2. Các phép toán với chuỗi string trong Python
Có nhiều phép toán được thực hiện với chuỗi string làm cho nó trở thành một trong những kiểu dữ liệu được sử dụng nhiều nhất trong Python.
Nối hai hoặc nhiều chuỗi
Phép toán nối hai hoặc nhiều chuỗi thành một chuỗi thì ta gọi là phép nối chuỗi.
- Để nối chuỗi thì ta sử dụng toán tử
+
. - Nếu muốn lặp lại chuỗi nhiều lần thì dùng toán tử
*
.
Hãy xem ví dụ dưới đây:
str1 = 'Hello' str2 ='World!' # Sử dụng + print('str1 + str2 = ', str1 + str2) # Sử dụng * print('str1 * 3 =', str1 * 3)
Chạy lên kết quả sẽ như sau:
str1 + str2 = HelloWorld! str1 * 3 = HelloHelloHello
Nếu viết hai chuỗi gần kề nhau thì cũng được xem là phép nối chuỗi. Còn nếu muốn nối hai chuỗi có nhiều dòng thì phải bổ sung thêm cặp ngoặc đơn.
# Đặt hai chuỗi gần nhau print('Xin chào'' Freetuts') # Hai chuỗi gần nhau nhưng có xuống hàng # Nên thêm cặp ngoặc đơn () print(('Xin chào' ' Freetuts'))
Kết quả:
Xin chào Freetuts Xin chào Freetuts
Lặp qua từng ký tự trong chuỗi
Nếu bạn muốn lặp qua từng ký tự trong chuỗi thì có thể kết hợp với vòng lặp for.
count = 0 for letter in 'Freetuts.net': if(letter == 't'): count += 1 print(count,'ký tự t được tìm thấy')
Kết quả:
3 ký tự t được tìm thấy
Kiểm tra chuỗi con trong chuỗi cha
Tương tự, để kiểm tra một chuỗi con có xuất hiện trong chuỗi cha hay không thì ta dùng toán tử in
và not in
.
# Trả về True print('f' in 'freetuts.net') # Trả về False print('f' not in 'freetuts.net')
3. Các định dạng chuỗi
Ký tự nháy đơn và nháy kép
Nếu trong chuỗi có ký tự nháy đơn hoặc nháy kép thì bạn phải bổ thêm đằng trước nó dấu \
, nếu không Python sẽ không hiểu đó là một dãy chuỗi. Việc sử dụng nháy đơn hay kép phụ thuộc vào chuỗi được bao quanh bởi nháy đơn hay kép:
- Nếu bao quanh bởi nháy đơn thì thêm
\
vào nháy đơn - Nếu bao quanh bởi nháy kép thì thêm
\
vào nháy kép
# Sử dụng ba dấu nháy print('''He said, "What's there?"''') # Trường hợp nháy đơn print('He said, "What's there?"') # Trường hợp nháy kép print("He said, \"What's there?\"")
Ký tự thoát
Chúng ta có rất nhiều ký tự thoát trong Python, nó là một dạng chuỗi đặc biệt. Ví dụ bạn thêm \n
cuối chuỗi thì python sẽ hiểu đó là ký tự xuống hàng.
Dưới đây là danh sách các ký tự thoát.
Escape Sequence | Description |
---|---|
\newline | Backslash and newline ignored |
\\ | Backslash |
' | Single quote |
\" | Double quote |
\a |
ASCII Bell |
\b | ASCII Backspace |
\f | ASCII Formfeed |
\n | ASCII Linefeed |
\r | ASCII Carriage Return |
\t | ASCII Horizontal Tab |
\v | ASCII Vertical Tab |
\ooo | Character with octal value ooo |
\xHH | Character with hexadecimal value HH |
4. Lời kết
Như vậy là mình đã giới thiệu sơ lược các kiến thức về xử lý chuỗi string trong Python, bài này giải thích rõ phần lý thuyết giúp bạn hiểu một cách tường tận để sau này không phải bở ngỡ trước những bài toán phức tạp. Chúc ban học tốt.