Sử dụng kiểu dữ liệu String trong Python

Đây là bài 21/54 bài của series môn học Ngôn ngữ lập trình Python

1. Tạo String trong Python

Một String là một chuỗi các ký tự (character). Một ký tự chỉ đơn giản là một biểu tượng (symbol) được vẽ trên màn hình bằng các pixel. Các ký tự hiển thị trên màn hình được lưu trữ bởi các số nhị phân 0 và 1.

Quá trình chuyển đổi ký tự thành số nhị phân đượ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ố bảng mã phổ biến được sử dụng.

Trong Python, một String là một chuỗi các ký tự Unicode. Bảng mã Unicode có khả năng mã hóa và giải mã mọi ký tự trong tất cả các ngôn ngữ, các ký tự đặc biệt,…

Tạo String trong Python

String trong Python có thể được tạo bằng cách sử dụng dấu ngoặc đơn, dấu ngoặc kép và thậm chí sử dụng ba dấu nháy (triple quote).

# Creating a String with single Quotes
my_string = 'Gochocit.com'
print(my_string)
# Creating a String with double Quotes
my_string = "Gochocit.com"
print(my_string)
# Creating a String with triple Quotes
my_string = '''Gochocit.com'''
print(my_string)
# Creating a String with triple Quotes
my_string = """Hello, welcome to Gochocit.com!"""
print(my_string)
# Creating String with triple Quotes allows multiple lines
my_string = '''Hello,
                This
                is
                Gochocit.com'''
print(my_string)
Kết quả
Gochocit.com
Gochocit.com
Gochocit.com
Hello, welcome to Gochocit.com!
Hello,
                This
                is
                Gochocit.com

Biến (variable) tham chiếu đến String

Chúng ta có thể gán một String cho một biến bằng toán tử gán (=). Lúc này, biến đó sẽ tham chiếu đến một đối tượng của lớp str. Ví dụ:

website = "Gochocit.com"
print(website)
print(type(website))
Kết quả
Gochocit.com
<class 'str'>

2. Truy cập các ký tự của String trong Python

Chúng ta có thể truy cập từng ký tự trong String bằng index của chúng. Index của một String bắt đầu đầu bằng 0, phải là một số nguyên. Python cho phép index của String là số nguyên âm. Index bằng -1 là vị trí của ký tự cuối cùng bên phải trong String.

Index trong String
website = 'gochocit.com'
print('website = ', website)

#first character
print('website[0] = ', website[0])

#character at index 5
print('website[5] = ', website[5])

#last character
print('website[-1] = ', website[-1])

#character at index -5
print('website[-5] = ', website[-5])
Kết quả
website =  gochocit.com
website[0] =  g
website[5] =  c
website[-1] =  m
website[-5] =  t

Chúng ta có thể truy xuất một số ký tự liền kề bằng cách sử dụng toán tử slicing :.

website = 'gochocit.com'
print('website = ', website)

#slicing 2nd to 5th character
print('website[1:5] = ', website[1:5])

#slicing 6th to 2nd last character
print('website[5:-2] = ', website[5:-2])
Kết quả
website =  gochocit.com
website[1:5] =  ocho  
website[5:-2] =  cit.c

Khi truy cập một ký tự với index không thuộc khoảng index trong String sẽ gây ra lỗi IndexError. Nếu index không phải là kiểu integer thì sẽ gây ra lỗi TypeError.

website = 'gochocit.com'
print('website = ', website)

# index must be in range
# IndexError: string index out of range
print('website[50] = ', website[50])

# index must be an integer
# TypeError: string indices must be integers
print('website[1.5] = ', website[1.5])

3. Các thao tác trên String trong Python

3.1. Thay đổi hoặc xóa một String

Trong Python, String có giá trị bất biến. Có nghĩa là các ký tự trong Strirng không thể thay đổi. Vì thế, String cũng không thể thay đổi. Nếu cố thay đổi sẽ gây ra lỗi TypeError.

website = 'gochocit.com'
website[1] = 'a'
Kết quả
TypeError: 'str' object does not support item assignment

Nếu muốn có một String khác thì chúng ta chỉ đơn giản là gán String đó cho biến.

website = 'gochocit.com'
print(website)
website = "lhvinhckc.info"
print(website)
Kết quả
gochocit.com
lhvinhckc.info

Chúng ta không thể xóa một ký tự trong String nhưng có thể sử dụng từ khóa del để xóa một String.

website = 'gochocit.com'
#TypeError: 'str' object doesn't support item deletion
del website[1]
del website
#NameError: name 'website' is not defined
print(website)

3.2. Các toán tử trên String

Toán tử nối 2 hoặc nhiều String

Toán tử + giúp nối các chuỗi lại với nhau. Toán tử * giúp lặp lại một chuỗi với một số lần cho trước.

# Python String Operations
str1 = 'Hello, '
str2 ='Welcome to '
str3 ='Gochocit.com!'

# using +
print('str1 + str2 + str3 = ', str1 + str2 + str3)

# using *
print('str3 * 3 =', str3 * 3)
Kết quả
str1 + str2 + str3 =  Hello, Welcome to Gochocit.com!
str3 * 3 = Gochocit.com!Gochocit.com!Gochocit.com!

3.3. Duyệt qua từng ký tự trong String

Chúng ta có thể duyệt qua từng ký tự trong một chuỗi bằng vòng lặp for. Bên dưới là một ví dụ để đếm số lượng ký tự ‘c’ trong một chuỗi.

# Iterating through a string
count = 0
for letter in 'Gochocit.com':
    if(letter == 'c'):
        count += 1
print(count,'letters found')
Kết quả
3 letters found

3.4. Kiểm tra một String có thuộc một String khác không?

Sử dụng từ khóa in hoặc not in để kiểm tra một String có thuộc một String khác không?

website = 'gochocit.com'
#True
print("it" in website)
#False
print("ckc" in website)
#True
print("itckc" not in website)
#False
print("com" not in website)

3.5. Định dạng (format) String trong Python

Python cho phép chúng ta định dạng String bằng cách sử dụng hàm format(). Hàm format() sử dụng dấu ngoặc nhọn {} để giữ chổ trong String cho các đối số của hàm format().

# Default order
String1 = "{} {} {}".format('Goc', 'hoc', 'it')
print("Print String in default order: ")
print(String1)
 
# Positional Formatting
String1 = "{1} {0} {2}".format('Goc', 'hoc', 'it')
print("Print String in Positional order: ")
print(String1)
 
# Keyword Formatting
String1 = "{l} {h} {g}".format(g='Goc', h='hoc', l='it')
print("Print String in order of Keywords: ")
print(String1)
Kết quả
Goc hoc it
Print String in Positional order:
hoc Goc it
Print String in order of Keywords:
it hoc Goc

Chúng ta có thể định dạng các số integerfloat với các ký hiệu format đặc biệt. Ví dụ:

# Formatting of Integers
String1 = "{0:b}".format(16)
print("Binary representation of 16 is ")
print(String1)
 
# Formatting of Floats
String1 = "{0:e}".format(165.6458)
print("Exponent representation of 165.6458 is ")
print(String1)
 
# Rounding off Integers
String1 = "{0:.2f}".format(1/6)
print("one-sixth is : ")
print(String1)
Kết quả
Binary representation of 16 is 
10000
Exponent representation of 165.6458 is
1.656458e+02
one-sixth is :
0.17

Nếu không sử dụng hàm format(), chúng ta có thể sử dụng kiểu định dạng với toán tử %. Ví dụ:

num1 = 12.3456789
print("Formatting in 3.2f format: ")
print('The value of num1 is %3.2f' % num1)
print("Formatting in 3.4f format: ")
print('The value of num1 is %3.4f' % num1)
Kết quả
Formatting in 3.2f format: 
The value of num1 is 12.35
Formatting in 3.4f format:
The value of num1 is 12.3457

3.6. Ký tự escape trong Python

Khi print các chuỗi có đấu nháy đơn hoặc nháy kép hoặc một ký tự không hợp lệ nào đó thì sẽ gây ra lỗi. Ví dụ:

#SyntaxError: unterminated string literal
print("He said, "What's there?"")
txt = "We are the so-called "Vikings" from the north."
# SyntaxError: invalid syntax
print(txt)
#SyntaxError: unterminated string literal
print("C:\Python\")

Chúng ta giải quyết những trường hợp này bằng cách sử dụng ký tự escape \. Ngoài ra, chúng ta có thể bỏ qua ký tự escape bằng cách đặt r hoặc R trước String.

my_string = 'I\'m a "man"'
print("Escaping Single Quote: ")
print(my_string)
my_string = "I'm a \"man\""
print("Escaping Double Quotes: ")
print(my_string)
my_path = "C:\\Python\\Geeks\\"
print("Escaping Backslashes: ")
print(my_path)

print("This is \x48\x45\x58 representation")
#ignore escape character
print(r"This is \x48\x45\x58 representation")
Kết quả
Escaping Single Quote: 
I'm a "man"
Escaping Double Quotes: 
I'm a "man"
Escaping Backslashes:
C:\Python\Geeks\
This is HEX representation
This is \x48\x45\x58 representation

Các bạn có thể xem tất cả các ký tự escape tại đây.

3.7. Một số hàm thường sử dụng khi thao tác với String trong Python

HàmChức năng
enumerate()Trả về một đối tượng bao gồm tất cả index và ký tự tương ứng trong String
len()Trả về số ký tự có trong String
lower()Chuyển các ký tự trong String thành ký tự thường
upper()Chuyển các ký tự trong String thành ký tự hoa
join()Nối các String lại với nhau
split()Trả về một danh sách chứa các từ (word) trong String
find()Trả về vị trí đầu tiên của một String được tìm thấy trong một String khác
replace()Thay thế một String con bằng một String khác trong String cha. Rồi trả về String mới nhận được.
website = "Welcome to Gochocit.com"
# enumerate()
list_enumerate = list(enumerate(website))
print('list(enumerate(website) = ', list_enumerate)

#character count
print('len(website) = ', len(website))

print(website.lower())
print(website.upper())
print(website.split())
print(website.join(["How ", " are ", " you?"]))
print(website.find("it"))
print(website.replace('Gochocit.com','lhvinhckc.info'))
Kết quả
list(enumerate(website) =  [(0, 'W'), (1, 'e'), (2, 'l'), (3, 'c'), (4, 'o'), (5, 'm'), (6, 'e'), (7, ' '), (8, 't'), (9, 
'o'), (10, ' '), (11, 'G'), (12, 'o'), (13, 'c'), (14, 'h'), (15, 'o'), (16, 'c'), (17, 'i'), (18, 't'), (19, '.'), (20, 'c'), (21, 'o'), (22, 'm')]
len(website) =  23
welcome to gochocit.com
WELCOME TO GOCHOCIT.COM
['Welcome', 'to', 'Gochocit.com']
How Welcome to Gochocit.com are Welcome to Gochocit.com you?
17
Welcome to lhvinhckc.info
5/5 - (1 bình chọn)
Bài trước và bài sau trong môn học<< Sử dụng module và package trong PythonCấu trúc dữ liệu List trong Python >>
Chia sẻ trên mạng xã hội:

Tác giả Vinh Lê

Vinh Lê hiện đang là biên tập viên tại Góc Học IT.

Bài viết của Vinh Lê

Trả lời

Lưu ý:

1) Vui lòng bình luận bằng tiếng Việt có dấu.

2) Khuyến khích sử dụng tên thật và địa chỉ email chính xác.

3) Mọi bình luận trái quy định sẽ bị xóa bỏ.