Trong bài học này bạn sẽ được 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 các hành động và chức năng liên quan đến chuỗi.
1. Chuỗi 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.
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.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
# 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) |
Như ví dụ này 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, chạy lên kết quả sẽ như sau:
1
2
3
4
5
|
Hello Hello Hello Hello, welcome to the world of Python |
Truy cập các ký tự của chuỗi string
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ỉ số 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, v.v. 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).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
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 ]) |
Chạy chương trình này sẽ cho kết quả như sau:
1
2
3
4
5
|
str = programiz str[0] = p str[-1] = z str[1:5] = rogr str[5:-2] = am |
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.
1
2
3
4
5
6
7
8
9
|
# 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
Để 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.
1
2
3
4
5
6
7
|
>>> my_string = 'programiz' >>> my_string[ 5 ] = 'a' ... TypeError: 'str' object does not support item assignment >>> my_string = 'Python' >>> my_string 'Python' |
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ờ.
1
2
3
4
5
6
7
|
>>> del my_string[ 1 ] ... TypeError: 'str' object doesn't support item deletion >>> del my_string >>> my_string ... NameError: name 'my_string' is not defined |
2. Các phép toán với chuỗi 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:
1
2
3
4
5
6
7
8
|
str1 = 'Hello' str2 = 'World!' # using + print ( 'str1 + str2 = ' , str1 + str2) # using * print ( 'str1 * 3 =' , str1 * 3 ) |
Chạy lên kết quả sẽ như sau:
1
2
|
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.
1
2
3
4
5
6
7
8
9
|
>>> # two string literals together >>> 'Hello ' 'World!' 'Hello World!' >>> # using parentheses >>> s = ( 'Hello ' ... 'World' ) >>> s 'Hello World' |
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.
1
2
3
4
5
|
count = 0 for letter in 'Hello World' : if (letter = = 'l' ): count + = 1 print (count, 'letters found' ) |
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
.
1
2
3
4
|
>>> 'a' in 'program' True >>> 'at' not in 'battle' False |
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 đơ 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
1
2
3
4
5
6
7
8
|
# 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?\"" ) |
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 |
1
2
3
4
5
6
7
8
9
|
>>> 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 |
Đôi khi trong chuỗi có ký tự thoát nhưng bạn muốn đó là ký tự bình thường thì hãy thêm ký tự r
đằng trước chuỗi.
1
2
3
4
5
|
>>> print ( "This is \x61 \ngood example" ) This is a good example >>> print (r "This is \x61 \ngood example" ) This is \x61 \ngood example |
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 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.
Nguồn:https://freetuts.net