Home > Python > Python căn bản > Kiểu dữ liệu String trong Python

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 được đăng tại freetuts.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.

Bình luận đã đóng, nếu có thắc mắc hãy đặt câu hỏi tại hoicode.com để admin trả lời.

BÀI VIẾT

notice png LIST home png HOME hot gif BÁO
LỖI
top png TOP