INTRODUCTION
FLOW CONTROL
FUNCTIONS
DATATYPES
OBJECT & CLASS
Bài tập Python: Lập trình hướng đối tượng (OOP) trong Python Lập trình hướng đối tượng trong Python Class Variables trong Python Tìm hiểu về Methods trong Python Cách sử dụng phương thức __init__() trong Python Các biến Instance trong Python Tìm hiểu về Class Attributes trong Python Hàm Static Methods trong Python Phương thức __str__ trong Python Phương thức __repr__ trong Python Phương thức eq trong Python Tìm hiểu phương thức __hash__ trong Python Phương thức __bool__ trong Python Phương thức del trong Python Tìm hiểu về lớp Property trong Python Tìm hiểu về nạp chồng toán tử trong Python Trình Decorator Property trong Python Thuộc tính chỉ đọc trong Python Thuộc tính Delete trong Python Sử dụng super() trong Python Sử dụng __slots__ trong Python Cách sử dụng Protocol trong Python Sử dụng Enum aliases và @enum.unique trong Python Tùy chỉnh và mở rộng lớp Enum trong Python Cách sử dụng hàm Auto() của Python Single Responsibility Principle trong Python Nguyên tắc Đóng-Mở trong Python Nguyên tắc thay thế Liskov - LSP trong Python Interface Segregation Principle - ISP trong Python. Nguyên tắc đảo ngược sự phụ thuộc trong Python Đa kế thừa trong Python Tìm hiểu về các lớp mixin trong Python Mô tả Descriptors trong Python Phân biệt Data Descriptor và Non-data Descriptor trong Python Phương thức __new__ trong Python Tìm hiểu về Class Type trong Python Lớp Metaclass trong Python Ví dụ sử dụng metaclass trong Python Tìm hiểu về decorator dataclass trong Python Tìm hiểu về các ngoại lệ trong Python Ngoại lệ Raise trong Python Sử dụng câu lệnh raise from trong Python Ngoại lệ tùy chỉnh trong Python Module trong Python Package trong Python Class trong Python Hàm khởi tạo trong Python Kế thừa trong Python Đa kế thừa trong Python Setter và Getter trong Python Override trong Python Interface trong Python Bài tập Python: Module và Class
ADVANCED TOPICS
BỔ SUNG
PYTHON CĂN BẢN
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

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.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

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.

Ví dụ tạo chuỗi
# 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

string trong python JPG

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).

Ví dụ
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.

Lỗi đổi giá trị của 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:

loi chuoi 1 JPG

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ờ.

Lỗi xóa một ký tự trong chuỗi
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.

Ví dụ
# Đặ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.

Ví dụ
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ử innot in.

Ví dụ
# 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
Ví dụ
# 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.

Cùng chuyên mục:

Hướng dẫn xây dựng Command-Line Interface (CLI) bằng Quo trong Python

Hướng dẫn xây dựng Command-Line Interface (CLI) bằng Quo trong Python

Hướng dẫn toàn diện về module datetime trong Python

Hướng dẫn toàn diện về module datetime trong Python

Cách truy cập và thiết lập biến môi trường trong Python

Cách truy cập và thiết lập biến môi trường trong Python

Lớp dữ liệu (Data Classes) trong Python với decorator @dataclass

Lớp dữ liệu (Data Classes) trong Python với decorator @dataclass

Từ khóa yield trong Python

Từ khóa yield trong Python

Sự khác biệt giữa sort() và sorted() trong Python

Sự khác biệt giữa sort() và sorted() trong Python

Sử dụng Poetry để quản lý dependencies trong Python

Sử dụng Poetry để quản lý dependencies trong Python

Định dạng chuỗi Strings trong Python

Định dạng chuỗi Strings trong Python

Một tác vụ phổ biến khi làm việc với danh sách trong Python

Một tác vụ phổ biến khi làm việc với danh sách trong Python

Làm việc với các biến môi trường trong Python

Làm việc với các biến môi trường trong Python

Sự khác biệt giữa set() và frozenset() trong Python

Sự khác biệt giữa set() và frozenset() trong Python

Sự khác biệt giữa iterator và iterable trong Python

Sự khác biệt giữa iterator và iterable trong Python

Cách làm việc với file tarball/tar trong Python

Cách làm việc với file tarball/tar trong Python

Chuyển đổi kiểu dữ liệu trong Python

Chuyển đổi kiểu dữ liệu trong Python

Sự khác biệt giữa toán tử == và is trong Python

Sự khác biệt giữa toán tử == và is trong Python

Làm việc với file ZIP trong Python

Làm việc với file ZIP trong Python

Cách sử dụng ThreadPoolExecutor trong Python

Cách sử dụng ThreadPoolExecutor trong Python

Sự khác biệt giữa byte objects và string trong Python

Sự khác biệt giữa byte objects và string trong Python

Xử lý độ chính xác các hàm floor, ceil, round, trunc, format  trong Python

Xử lý độ chính xác các hàm floor, ceil, round, trunc, format trong Python

Cách lặp qua nhiều list với hàm zip() trong Python

Cách lặp qua nhiều list với hàm zip() trong Python

Top