Reportar esta app

Description

String trong Python

Kiểu string trong Python là chuỗi ký tự Unicode. Python cho phép viết giá trị chuỗi theo nhiều cách khác nhau.

Giá trị stringGhi chú
‘Hello world’Sử dụng cặp dấu nháy đơn
“Hello world”Sử dụng cặp dấu nháy kép
”’Hello world”’Sử dụng cặp ”’ ( 3 dấu nháy đơn)
“””Hello world”””Sử dụng cặp “””
‘ I want to say” I love you”‘Có thể dùng dấu nháy kép trong chuỗi nằm trong cặp dấu nháy đơn
” My name’s Donald”Có thể dùng dấu nháy đơn trong chuỗi nằm trong cặp dấu nháy kép
‘My name\’s Donald’Dùng \’ để biểu diễn dấu ‘ trong chuỗi nằm giữa cặp nháy đơn
” I want to say \” I love you\””Dùng \” để biểu diễn dấu ” trong chuỗi nằm giữa cặp nháy kép.

Python không có kiểu ký tự như các ngôn ngữ khác. Kiểu ký tự trong Python có thể xem như một chuỗi chỉ chứa 1 ký tự.

Cuối ký tự đặt trong cặp dấu nháy đơn có thể chứa dấu nháy kép. Tương tự, nếu chuỗi ký tự đặt trong cặp dấu nháy kép thì có thể chứa cả dấu nháy đơn. Chuỗi ký tự tạo ra bởi cặp dấu nháy đơn hoặc nháy kép bắt buộc phải nằm trên một dòng.

\’ và \” được gọi là các escape character biểu diễn cho ký tự ‘ và “/

Cặp 3 dấu nháy đơn hoặc cặp 3 dấu nháy kép cho phép tạo ra chuỗi với nhiều dòng. Ví dụ


1
2
3
4
5
6
7
8
text = """Strings are amongst the most popular types in Python.
We can create them simply by enclosing characters in quotes.
Python treats single quotes the same as double quotes.
Creating strings is as simple as assigning a value to a variable."""

print(text)

line = "Hello world"
print(line)

Tương tự như các kiểu số trong Python, String cũng là kiểu dữ liệu bất biến. Nghĩa là mọi thao tác cập nhật chuỗi đều dẫn đến tạo chuỗi mới. Điều này cũng tương tự như kiểu string trong C#.

Escape character trong Python string.

Nếu bạn đã học C chắc hẳn bạn đã gặp ký tự như \r, \n, \t. Các ký tự này được gọi là escape character.

Chuỗi trong character là một số ký tự có ý nghĩa đặc biệt nếu xuất hiện trong xâu. Mỗi escape character là một ký tự. Mỗi ký tự này có thể được biểu diễn ở dạng dấu xuộc quen thuộc hoặc ở dạng mã hex.

Tham khảo thêm ngay  Module và package trong Python

Dưới đây là một số escape character thường gặp.

Escape characterTên gọi
\a0x07Bell/Alert
\b0x08Backspace
\e0x1bEscape
\f0x0cFormfeed
\n0x0aNewline
\r0x0dCarriage return
\s0x20Space
\t0x09Tab
\v0x0bVertical tab

Đây chỉ là ký tự thông dụng. Ngoài ra còn một số ký tự nữa ít gặp hơn.

Trong các ký tự trên \r, \n, \t là thường gặp nhất khi in dữ liệu ra console:

\r: đưa con trỏ văn bản console về đầu dòng

\t: chọn dấu tab

\n: bắt đầu một dòng mới.


1
2
3
4
5
6
>>> print("Hello\tworld")
Hello    world
>>> print("Hello\nworld")
Hello
world
>>>

Trong cách viết chuỗi , \’ và \” cũng là các escape character biểu diễn cho ký tự ‘ và “

Nếu bạn muốn Python bỏ qua tất cả các escape character. Bạn có thể viết như sauL


1
2
>>> print(r'Hello\nworld') # đặt thêm r vào trước giá trị chuỗi
Hello\nworld

Bạn đặt trên r haowjc R vào trước giá trị của chuỗi. Ký tự r khi này sẽ biến chuỗi thành chuỗi thô ( rawstring). Trong chuỗi thô mọi ký tự đặc biệt như escape character sẽ bị bỏ qua.

Các phép toán trên kiểu string trong Python.

Python cung cấp sẵn một số phép toán trên

Để dễ minh họa các phép toán này, chúng ta giả sử có hai chuỗi a=”Hello” và b=’Python’.

Phép toánÝ nghĩaVí dụ
+Phép ghép xâu (concatenation)a+b cho ‘HelloPython’
*Phép lặp xâu (repetition)a*2 cho ‘HelloHello’
[i]Phép cắt (slice), lấy ký tự ở vị trí ia[0] cho ký tự ‘H’
[i2:i2]Phép cắt đoạn, range slice từ vị trí i 1 đến i2, có thể bỏ qua i1 hoặc i2, i1 và i2 âm thì tính từ cuối chuỗia[1:4] cho ‘ell’, a[1:] cho ‘ello’ ( lấy từ ký tự số 1 về cuối), a[-1] cho ‘o’ (lấy ký tự thứ 1 từ cuối đến hết ký tự cuối cùng),
a[1:-1] cho ‘ell’ ( lấy từ ký tự số 1 đến ký tự gần cuối)
inKiểm tra thành viên‘lo’ in a cho kết quả True (‘Hello’ chứa ‘lo’), ‘lol’ in a cho kết quả False (‘Hello’ không chứa ‘lol’).
not inKiểm tra thành viên (phủ định) Giống như trên kết quả ngược lại
r/R chuỗi thôBạn đã gặp ở phần trên
%Định dạng chuỗi Xem phần tiếp theo
== So sánh xâu (bằng)a==b cho kết quả False
!=So sánh xâu (khác)a!=b cho kết quả True.

Lưu ý các phép so sánh chuỗi sẽ so từng cặp ký tự từ trái qua phải, ký tự hoa khác ký tự thường. Python cũng cáp dụng các phép so sánh >.<, >=,<= cho kiểu chuỗi ký tự.

Tham khảo thêm ngay  Dữ liệu của class Python: instance và class attribute

Bạn có thể thử nghiệm các phép toán trên như sau:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
&gt;&gt;&gt; a, b = 'Hello', 'Python'
&gt;&gt;&gt; a + b
'HelloPython'
&gt;&gt;&gt; a[1:]
'ello'
&gt;&gt;&gt; a[-1:]
'o'
&gt;&gt;&gt; a[-1:]
''
&gt;&gt;&gt; a[-2:]
'lo'
&gt;&gt;&gt; 'lo' in a
True
&gt;&gt;&gt; 'lol' in a
False
&gt;&gt;&gt; a * 2
'HelloHello'
&gt;&gt;&gt; a[]
'H'
&gt;&gt;&gt;

Chuỗi định dạng ( Formated string) trong Python

Hãy xem ví dụ sau:


1
2
3
4
5
6
7
&gt;&gt;&gt; name, age = 'Donald', 40
&gt;&gt;&gt; greeting = 'Welcome, %s, %i years old' % (name, age)
&gt;&gt;&gt; greeting
'Welcome, Donald, 40 years old'
&gt;&gt;&gt; print('Welcome to heaven, %s, %i years old' % (name, age))
Welcome to heaven, Donald, 40 years old
&gt;&gt;&gt;

Ví dụ minh hoạt cách tạo một xâu có định dạng từ một khuôn mẫu các biến.

Lưu ý các biến phải đặt trong cặp dấu () và phân tách nhau bởi dấu phẩy. Danh sách biến ( thực chất là một biến kiểu tuple) phân tách với chuỗi bằng ký tự % – phép toán định dạng chuỗi của Python. Thứ tự biến trong tuple phải giống với thứ tự nó xuất hiện trong chuỗi.

Trong ví dụ trên, nếu thay đổi thứ tự name và age sẽ gây lỗi.

Dưới đây là các ký tự định dạng trong Python.

Ký tự định dạngÝ nghĩa
%cký tự
%schuỗi
%isố nguyên(có dấu)
%dsố nguyên(có dấu)
%usố nguyên(không dấu)
%osố nguyên cơ số 8
%x,%XSố nguyên cơ số 16
%e,%Ebiểu diễn khoa học
%fsố thực

Đây là cách thức tạo chuỗi có định dạng từ Python 2.x. Trong python 3.x bạn vẫn có thể dùng lối viết này được:

Tham khảo thêm ngay  Cú pháp Python cơ bản

Nếu không muốn dùng phép toán định dạng %, bạn có thể sử dụng hàm format như sau:


1
2
&gt;&gt;&gt; print('Welcome to heaven, {1}, {0} years old'.format(age, name))
Welcome to heaven, Donald, 40 years old

Khi sử dụng hàm format bạn tạo ra các placeholder trong chuỗi với số thứ tự (tính từ 0). Biến với số thứ tự tương ứng từ phương thức format sẽ được đặt vào thay cho placeholder để tạo thành chuỗi hoàn chỉnh.

Cách viết này tiện lợi hơn so với phép toán định dạng %. Bạn không cần nhớ các ký tự định dạng nữa.

Từ Python 3.6 trở đi bạn có thể sử dụng một lối viết chuỗi định dạng khác:


1
2
3
&gt;&gt;&gt; name, age = 'Donald', 40
&gt;&gt;&gt; print(f'Hello, {name}. You are {age}. Welcome to heaven!')
Hello, Donald. You are 40. Welcome to heaven!

Đây là lối viết chuỗi định dạng tiện lợi nhất trong Python.

Trong lối viết này bạn đặt ký tự f vào đầu chuỗi. Bên trong chuỗi bạn có thể sử dụng biến đặt trong cặp {}. Loại chuỗi này được gọi là f-string. Bên trong cặp {} bạn có thể sử dụng bất kỳ giá trị hoặc biểu thức nào của Python.

Các phương thức xử lý chuỗi trong Python.

Chuỗi trong Python là một object với nhiều phương thức xây dựng sẵn. Dưới đây là minh hoạt một số phương thức thường gặp:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
&gt;&gt;&gt; greeting = 'Hello, Donald. Welcome to heaven'
&gt;&gt;&gt; greeting
'Hello, Donald. Welcome to heaven'

&gt;&gt;&gt; # các hàm sau đây phải sử dụng từ object của chuỗi

&gt;&gt;&gt; greeting.capitalize() # viết hoa chữ cái đầu tiên, tất cả chữ cái còn lại viết thường
'Hello, donald. welcome to heaven'

&gt;&gt;&gt; greeting.lower() # chuyển về chuỗi viết thường
'hello, donald. welcome to heaven'

&gt;&gt;&gt; greeting.upper() # chuyển về chuỗi viết hoa
'HELLO, DONALD. WELCOME TO HEAVEN'

&gt;&gt;&gt; greeting.title() # viết hoa chữ cái đầu mỗi từ
'Hello, Donald. Welcome To Heaven'

&gt;&gt;&gt; greeting.split() # cắt một chuỗi ra các từ
['Hello,', 'Donald.', 'Welcome', 'to', 'heaven']

&gt;&gt;&gt; greeting = '   Hello, Donald. Welcome to heaven   '
&gt;&gt;&gt; greeting.strip() # cắt các khoảng trống ở đầu và cuối chuỗi
'Hello, Donald. Welcome to heaven'
&gt;&gt;&gt; greeting.rstrip() # cắt các khoảng trống ở cuối chuỗi (lề phải)
'   Hello, Donald. Welcome to heaven'
&gt;&gt;&gt; greeting.lstrip() # cắt các khoảng trống ở đầu chuỗi (lề trái)
'Hello, Donald. Welcome to heaven   '

&gt;&gt;&gt; # một số hàm kiểm tra
&gt;&gt;&gt; my_string = "Hello World"
&gt;&gt;&gt; my_string.isalnum()        #kiểm tra xem chuỗi có chứa toàn chữ số
False
&gt;&gt;&gt; my_string.isalpha()        # chuỗi chứa toàn chữ cái
False
&gt;&gt;&gt; my_string.isdigit()        # chuỗi có chứa chứ số
False
&gt;&gt;&gt; my_string.isupper()        # chuỗi chứa toàn ký tự hoa
False
&gt;&gt;&gt; my_string.islower()        # chuỗi chứa toàn kỹ tự thường
False
&gt;&gt;&gt; my_string.isspace()        # chuỗi chỉ chứa khoảng tráng
False
&gt;&gt;&gt; my_string.endswith('d')        # kết thúc là d
True
&gt;&gt;&gt; my_string.startswith('H')    # bắt đầu là H
True

&gt;&gt;&gt;# hàm sau đây là hàm toàn cục

&gt;&gt;&gt; len(greeting) # lấy độ dài chuỗi
32

&gt;&gt;&gt;

Lưu ý: do string trong Python là một class với nhiều phương thức hỗ trợ, bạn cần gọi các phương thức này từ biến (ví dụ greeting.upper()). Đây là điểm khác biệt so với các hàm toàn cục như print hay input (không gọi từ biến).

Leave a Reply

Your email address will not be published. Required fields are marked *