× Giới thiệu Lịch khai giảng Tin tức Sản phẩm học viên

Python Strings - Thông tin về chuỗi trong Python năm 2022

28/10/2022 01:29

Trong hướng dẫn này, bạn sẽ học 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 về các hoạt động và chức năng chuỗi khác nhau.

Chuỗi trong Python là gì?

Một chuỗi là một chuỗi các ký tự.

Một ký tự chỉ đơn giản là một biểu tượng. Ví dụ, ngôn ngữ tiếng Anh có 26 ký tự.

Máy tính không xử lý các ký tự, chúng xử lý các số (nhị phân). Mặc dù bạn có thể nhìn 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 số 0 và số 1.

Quá trình chuyển đổi ký tự thành số này được gọi là mã hóa, và quá trình ngược lạ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 chuỗi là một chuỗi các ký tự Unicode. Unicode được giới thiệu để bao gồm mọi ký tự trong tất cả các ngôn ngữ và mang lại sự đồng nhất trong bảng mã. 

Làm thế nào để tạo một chuỗi trong Python?

Các chuỗi có thể được tạo bằng cách đặt các ký tự bên trong một dấu ngoặc kép hoặc dấu ngoặc kép. Ngay cả dấu ngoặc kép có thể được sử dụng trong Python nhưng thường được sử dụng để đại diện cho chuỗi nhiều dòng và chuỗi doc.

 
# defining strings in Python
# all of the following are equivalent
my_string = 'Hello'
print(my_string)

my_string = "Hello"
print(my_string)

my_string = '''Hello'''
print(my_string)

# triple quotes string can extend multiple lines
my_string = """Hello, welcome to
           the world of Python"""
print(my_string)

Khi bạn chạy chương trình, kết quả đầu ra sẽ là:

Xin chào
Xin chào
Xin chào
Xin chào chào mừng bạn đến với
           thế giới của Python

Làm thế nào để truy cập các ký tự trong một chuỗi?

Chúng tôi có thể truy cập các ký tự riêng lẻ bằng cách sử dụng lập chỉ mục và một loạt các ký tự bằng cách sử dụng cắt. Chỉ mục bắt đầu từ 0. Cố gắng truy cập vào một ký tự ngoài phạm vi chỉ mục sẽ tăng một IndexError. Chỉ mục phải là một số nguyên. Chúng tôi không thể sử dụng phao hoặc các loại khác, điều này sẽ dẫn đến TypeError.

Python cho phép lập chỉ mục âm cho các chuỗi của nó.

Chỉ mục của -1đề cập đến mục cuối cùng, -2đến mục cuối cùng thứ hai, v.v. Chúng ta có thể truy cập một loạt các mục trong một chuỗi bằng cách sử dụng toán tử cắt :(dấu hai chấm).

#Accessing string characters in Python
str = 'programiz'
print('str = ', str)

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

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

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

#slicing 6th to 2nd last character
print('str[5:-2] = ', str[5:-2])

Khi chúng tôi chạy chương trình trên, chúng tôi nhận được kết quả sau:

str = programmiz
str [0] = p
str [-1] = z
str [1: 5] = rogr
str [5: -2] = sáng

Nếu chúng tôi cố gắng truy cập một chỉ mục ngoài phạm vi hoặc sử dụng các số không phải là số nguyên, chúng tôi sẽ gặp lỗi.

# 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

Việc cắt lát có thể được hình dung tốt nhất bằng cách xem xét chỉ số nằm giữa các phần tử như hình dưới đây.

Nếu chúng ta muốn truy cập một phạm vi, chúng ta cần chỉ mục sẽ cắt phần từ chuỗi.

Phần tử Slicing trong Python
String Slicing trong Python

Làm thế nào để thay đổi hoặc xóa một chuỗi?

Chuỗi là bất biến. Điều này có nghĩa là các phần tử của một chuỗi không thể thay đổi khi chúng đã được gán. Chúng tôi chỉ cần gán lại các chuỗi khác nhau cho cùng một tên.

>>> my_string = 'programiz'
>>> my_string[5] = 'a'
...
TypeError: 'str' object does not support item assignment
>>> my_string = 'Python'
>>> my_string
'Python'

Chúng tôi không thể xóa hoặc loại bỏ các ký tự khỏi một chuỗi. Nhưng có thể xóa hoàn toàn chuỗi bằng cách sử dụng deltừ khóa.

>>> del my_string[1]
...
TypeError: 'str' object doesn't support item deletion
>>> del my_string
>>> my_string
...
NameError: name 'my_string' is not defined

Hoạt động chuỗi trong Python

Có rất nhiều hoạt động có thể được thực hiện với chuỗi, điều này 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.

 

Kết nối của hai hoặc nhiều chuỗi

Việc nối hai hoặc nhiều chuỗi thành một chuỗi duy nhất được gọi là phép nối.

Toán tử + thực hiện điều này trong Python. Đơn giản chỉ cần viết hai ký tự chuỗi với nhau cũng có thể nối chúng.

Toán tử * có thể được sử dụng để lặp lại chuỗi trong một số lần nhất định.

 
# Python String Operations
str1 = 'Hello'
str2 ='World!'

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

# using *
print('str1 * 3 =', str1 * 3)

Khi chúng tôi chạy chương trình trên, chúng tôi nhận được kết quả sau:

str1 + str2 = HelloWorld!
str1 * 3 = Xin chàoHelloHello

Viết hai ký tự chuỗi với nhau cũng nối chúng giống như toán tử + .

Nếu chúng ta muốn nối các chuỗi trong các dòng khác nhau, chúng ta có thể sử dụng dấu ngoặc đơn.

>>> # two string literals together
>>> 'Hello ''World!'
'Hello World!'

>>> # using parentheses
>>> s = ('Hello '
...      'World')
>>> s
'Hello World'

Lặp lại thông qua một chuỗi

Chúng ta có thể lặp qua một chuỗi bằng vòng lặp for . Đây là một ví dụ để đếm số lượng 'l trong một chuỗi.

 
# Iterating through a string
count = 0
for letter in 'Hello World':
    if(letter == 'l'):
        count += 1
print(count,'letters found')
 

Khi chúng tôi chạy chương trình trên, chúng tôi nhận được kết quả sau:

3 chữ cái được tìm thấy

Kiểm tra tư cách thành viên chuỗi

Chúng tôi có thể kiểm tra xem một chuỗi con có tồn tại trong một chuỗi hay không bằng cách sử dụng từ khóa in.

>>> 'a' in 'program'
True
>>> 'at' not in 'battle'
False

Các hàm tích hợp để làm việc với Python

Các hàm tích hợp khác nhau hoạt động với trình tự cũng hoạt động với chuỗi.

Một số trong số những cái thường được sử dụng là enumerate()và len(). Hàm enumerate()trả về một đối tượng liệt kê. Nó chứa chỉ mục và giá trị của tất cả các mục trong chuỗi dưới dạng các cặp. Điều này có thể hữu ích cho việc lặp lại.

Tương tự, len()trả về độ dài (số ký tự) của chuỗi.

 
str = 'cold'

# enumerate()
list_enumerate = list(enumerate(str))
print('list(enumerate(str) = ', list_enumerate)

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

Khi chúng tôi chạy chương trình trên, chúng tôi nhận được kết quả sau:

list (enumerate (str) = [(0, 'c'), (1, 'o'), (2, 'l'), (3, 'd')]
len (str) = 4

Định dạng chuỗi Python

Trình tự thoát

Nếu chúng ta muốn in một văn bản nhưAnh ta nói, "Có gì ở đó?", chúng ta không thể sử dụng dấu ngoặc kép hoặc dấu ngoặc kép. Điều này sẽ dẫn đến kết quả SyntaxErrorlà bản thân văn bản chứa cả dấu nháy đơn và dấu ngoặc kép.

>>> print("He said, "What's there?"")
...
SyntaxError: invalid syntax
>>> print('He said, "What's there?"')
...
SyntaxError: invalid syntax

Một cách để giải quyết vấn đề này là sử dụng dấu ngoặc kép. Ngoài ra, chúng ta có thể sử dụng trình tự thoát.

Một chuỗi thoát bắt đầu bằng dấu gạch chéo ngược và được hiểu theo cách khác. Nếu chúng ta sử dụng một dấu nháy đơn để đại diện cho một chuỗi, thì tất cả các dấu nháy đơn bên trong chuỗi phải được thoát ra. Tương tự là trường hợp với dấu ngoặc kép. Đây là cách nó có thể được thực hiện để biểu diễn văn bản trên.

 
# using triple quotes
print('''He said, "What's there?"''')

# escaping single quotes
print('He said, "What\'s there?"')

# escaping double quotes
print("He said, \"What's there?\"")
 

Khi chúng tôi chạy chương trình trên, chúng tôi nhận được kết quả sau:

Anh ta nói, "Có gì ở đó?"
Anh ta nói, "Có gì ở đó?"
Anh ta nói, "Có gì ở đó?"

Đây là danh sách tất cả các chuỗi thoát được Python hỗ trợ.

Trình tự thoát Sự mô tả
\dòng mới Dấu gạch chéo ngược và dòng mới bị bỏ qua
\\ Gạch chéo ngược
\ ' Trích dẫn duy nhất
\ " Dấu ngoặc kép
\một Chuông ASCII
\ b ASCII Backspace
\ f Nguồn cấp dữ liệu ASCII
\N Nguồn cấp dữ liệu tuyến tính ASCII
\ r Vận chuyển ASCII trở lại
\ t Tab ngang ASCII
\ v Tab dọc ASCII
\ ooo Ký tự có giá trị bát phân ooo
\ xHH Ký tự có giá trị thập lục phân HH

Đây là một số ví dụ

>>> print("C:\\Python32\\Lib")
C:\Python32\Lib

>>> print("This is printed\nin two lines")
This is printed
in two lines

>>> print("This is \x48\x45\x58 representation")
This is HEX representation

Chuỗi thô để bỏ qua chuỗi thoát

Đôi khi chúng ta có thể muốn bỏ qua các chuỗi thoát bên trong một chuỗi. Để làm điều này, chúng ta có thể đặt rhoặc Rtrước chuỗi. Điều này sẽ ngụ ý rằng nó là một chuỗi thô và bất kỳ chuỗi thoát nào bên trong nó sẽ bị bỏ qua.

>>> print("This is \x61 \ngood example")
This is a
good example
>>> print(r"This is \x61 \ngood example")
This is \x61 \ngood example

Phương thức format () để định dạng chuỗi

Phương format()thức có sẵn với đối tượng chuỗi rất linh hoạt và mạnh mẽ trong việc định dạng chuỗi. Chuỗi định dạng chứa dấu ngoặc nhọn {}dưới dạng trình giữ chỗ hoặc trường thay thế được thay thế.

Chúng ta có thể sử dụng đối số vị trí hoặc đối số từ khóa để chỉ định thứ tự.

 
# Python string format() method

# default(implicit) order
default_order = "{}, {} and {}".format('John','Bill','Sean')
print('\n--- Default Order ---')
print(default_order)

# order using positional argument
positional_order = "{1}, {0} and {2}".format('John','Bill','Sean')
print('\n--- Positional Order ---')
print(positional_order)

# order using keyword argument
keyword_order = "{s}, {b} and {j}".format(j='John',b='Bill',s='Sean')
print('\n--- Keyword Order ---')
print(keyword_order)
Mã vận hành

Khi chúng tôi chạy chương trình trên, chúng tôi nhận được kết quả sau:

--- Đặt hàng mặc định ---
John, Bill và Sean

--- Lệnh vị trí ---
Bill, John và Sean

--- Thứ tự Từ khoá ---
Sean, Bill và John

Phương format()thức có thể có các đặc tả định dạng tùy chọn. Chúng được phân tách khỏi tên trường bằng dấu hai chấm. Ví dụ, chúng ta có thể căn trái <, căn phải >hoặc căn giữa ^một chuỗi trong không gian nhất định.

Chúng tôi cũng có thể định dạng số nguyên dưới dạng nhị phân, thập lục phân, v.v. và số thực có thể được làm tròn hoặc hiển thị ở định dạng số mũ. Có rất nhiều định dạng bạn có thể sử dụng. Truy cập vào đây để biết tất cả các định dạng chuỗi có sẵn với format() phương thức này.

>>> # formatting integers
>>> "Binary representation of {0} is {0:b}".format(12)
'Binary representation of 12 is 1100'

>>> # formatting floats
>>> "Exponent representation: {0:e}".format(1566.345)
'Exponent representation: 1.566345e+03'

>>> # round off
>>> "One third is: {0:.3f}".format(1/3)
'One third is: 0.333'

>>> # string alignment
>>> "|{:<10}|{:^10}|{:>10}|".format('butter','bread','ham')
'|butter    |  bread   |       ham|'

Định dạng kiểu cũ

Chúng tôi thậm chí có thể định dạng chuỗi giống như sprintf()kiểu cũ được sử dụng trong ngôn ngữ lập trình C. Chúng tôi sử dụng %toán tử để thực hiện điều này.

>>> x = 12.3456789
>>> print('The value of x is %3.2f' %x)
The value of x is 12.35
>>> print('The value of x is %3.4f' %x)
The value of x is 12.3457

Các phương thức chuỗi Python phổ biến

Có rất nhiều phương thức có sẵn với đối tượng chuỗi. Phương format()pháp mà chúng tôi đề cập ở trên là một trong số đó. Một số phương thức thường được sử dụng là lower(),,,, v.v. upper()Dưới join()đây là danh sách đầy đủ tất cả các phương thức tích hợp để làm việc với chuỗi trong Python .split()find()replace()

>>> "PrOgRaMiZ".lower()
'programiz'
>>> "PrOgRaMiZ".upper()
'PROGRAMIZ'
>>> "This will split all words into a list".split()
['This', 'will', 'split', 'all', 'words', 'into', 'a', 'list']
>>> ' '.join(['This', 'will', 'join', 'all', 'words', 'into', 'a', 'string'])
'This will join all words into a string'
>>> 'Happy New Year'.find('ew')
7
>>> 'Happy New Year'.replace('Happy','Brilliant')
'Brilliant New Year'