Hướng dẫn what are characters in python? - các ký tự trong python là gì?
Xem bây giờ hướng dẫn này có một khóa học video liên quan được tạo bởi nhóm Python thực sự. Xem nó cùng với hướng dẫn bằng văn bản để làm sâu sắc thêm sự hiểu biết của bạn: chuỗi và dữ liệu nhân vật trong Python This tutorial has a related video course created by the Real Python team. Watch it together with the written tutorial to deepen your understanding: Strings and Character Data in Python Show
Trong hướng dẫn về các loại dữ liệu cơ bản trong Python, bạn đã học được cách xác định các chuỗi: các đối tượng có chứa chuỗi dữ liệu ký tự. Xử lý dữ liệu ký tự là tích hợp để lập trình. Đây là một ứng dụng hiếm hoi mà không cần phải điều khiển các chuỗi ít nhất ở một mức độ nào đó.strings: objects that contain sequences of character data. Processing character data is integral to programming. It is a rare application that doesn’t need to manipulate strings at least to some extent. Tại đây, những gì bạn sẽ học được trong hướng dẫn này: Python cung cấp một bộ vận hành, chức năng và phương pháp phong phú để làm việc với các chuỗi. Khi bạn kết thúc với hướng dẫn này, bạn sẽ biết cách truy cập và trích xuất các phần của chuỗi, và cũng quen thuộc với các phương thức có sẵn để thao tác và sửa đổi dữ liệu chuỗi. Python provides a rich set of operators, functions, and methods for working with strings. When you are finished with this tutorial, you will know how to access and extract portions of strings, and also be familiar with the methods that are available to manipulate and modify string data. Bạn cũng sẽ được giới thiệu cho hai đối tượng Python khác được sử dụng để biểu diễn dữ liệu byte thô, các loại 23 và 24.Thao tác chuỗiCác phần dưới đây làm nổi bật các toán tử, phương pháp và chức năng có sẵn để làm việc với các chuỗi. Toán tử chuỗiBạn đã thấy các nhà khai thác 25 và 26 áp dụng cho các toán tử số trong hướng dẫn về các toán tử và biểu thức trong Python. Hai nhà khai thác này cũng có thể được áp dụng cho các chuỗi là tốt.Toán tử >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
|
35 36 | Dưới đây là các ví dụ về cả hai hình thức: |
---|---|
Toán tử nhân 32 phải là một số nguyên. Bạn có thể nghĩ rằng nó sẽ được yêu cầu là một số nguyên dương, nhưng thật thú vị, nó có thể bằng không hoặc âm, trong trường hợp đó kết quả là một chuỗi trống: | Nếu bạn đã tạo một biến chuỗi và khởi tạo nó vào chuỗi trống bằng cách gán cho nó giá trị 38, bất kỳ ai cũng sẽ nghĩ đúng là bạn hơi khó chịu. Nhưng nó sẽ hoạt động. |
Toán tử 39 | Python cũng cung cấp một nhà điều hành thành viên có thể được sử dụng với các chuỗi. Toán tử 39 trả về 41 nếu toán hạng đầu tiên được chứa trong phần thứ hai và 42 nếu không: |
Ngoài ra còn có một toán tử 43, ngược lại: | Chức năng chuỗi tích hợp |
Như bạn đã thấy trong hướng dẫn về các loại dữ liệu cơ bản trong Python, Python cung cấp nhiều chức năng được tích hợp cho trình thông dịch và luôn có sẵn. Dưới đây là một số ít hoạt động với các chuỗi: | Hàm số |
Sự mô tả
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
48
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
44>>> s = 'foo.' >>> s * 4 'foo.foo.foo.foo.' >>> 4 * s 'foo.foo.foo.foo.'
Chuyển đổi một số nguyên thành một ký tự
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
45>>>
>>> ord('a')
97
>>> ord('#')
35
Toán tử
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
26Toán tử
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
26 tạo ra nhiều bản sao của chuỗi. Nếu >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
31 là một chuỗi và >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
32 là một số nguyên, thì một trong các biểu thức sau sẽ trả về một chuỗi bao gồm >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
32 các bản sao được nối là >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
31:>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
35 >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
36>>>
>>> ord('€')
8364
>>> ord('∑')
8721
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
52
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
Toán tử
26>>> s = 'foo.' >>> s * 4 'foo.foo.foo.foo.' >>> 4 * s 'foo.foo.foo.foo.'
Toán tử
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
26 tạo ra nhiều bản sao của chuỗi. Nếu >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
31 là một chuỗi và >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
32 là một số nguyên, thì một trong các biểu thức sau sẽ trả về một chuỗi bao gồm >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
32 các bản sao được nối là >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
31:>>>
>>> chr(97)
'a'
>>> chr(35)
'#'
Toán tử
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
26>>>
>>> chr(8364)
'€'
>>> chr(8721)
'∑'
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
59Toán tử
26>>> s = 'foo.' >>> s * 4 'foo.foo.foo.foo.' >>> 4 * s 'foo.foo.foo.foo.'
Với
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
46, bạn có thể kiểm tra độ dài chuỗi Python. >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
59 Trả về số lượng ký tự trong >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
31:>>>
>>> s = 'I am a string.'
>>> len(s)
14
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
63Trả về một biểu diễn chuỗi của một đối tượng.
Hầu như bất kỳ đối tượng nào trong Python đều có thể được hiển thị dưới dạng chuỗi.
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
63 Trả về biểu diễn chuỗi của đối tượng >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
65:>>>
>>> str(49.2)
'49.2'
>>> str(3+4j)
'(3+4j)'
>>> str(3 + 29)
'32'
>>> str('foo')
'foo'
Trả về một biểu diễn chuỗi của một đối tượng.
Hầu như bất kỳ đối tượng nào trong Python đều có thể được hiển thị dưới dạng chuỗi.
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
63 Trả về biểu diễn chuỗi của đối tượng >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
65:Lập chỉ mục chuỗi
Thông thường trong các ngôn ngữ lập trình, các mục riêng lẻ trong một bộ dữ liệu được đặt hàng có thể được truy cập trực tiếp bằng cách sử dụng chỉ mục số hoặc giá trị khóa. Quá trình này được gọi là lập chỉ mục.
Trong Python, các chuỗi được sắp xếp các chuỗi dữ liệu ký tự và do đó có thể được lập chỉ mục theo cách này. Có thể truy cập các ký tự riêng lẻ trong một chuỗi bằng cách chỉ định tên chuỗi theo sau là một số trong dấu ngoặc vuông (
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
66).Lập chỉ mục chuỗi trong Python dựa trên 0: ký tự đầu tiên trong chuỗi có chỉ mục >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
67, tiếp theo có chỉ mục >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
68, v.v. Chỉ số của ký tự cuối cùng sẽ là độ dài của chuỗi trừ đi.Ví dụ: một sơ đồ của các chỉ số của chuỗi
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
69 sẽ trông như thế này:>>>
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
0Chỉ số chuỗi
>>>
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
1Các ký tự riêng lẻ có thể được truy cập bởi Index như sau:
Cố gắng lập chỉ mục vượt quá cuối chuỗi kết quả trong một lỗi:Các chỉ số chuỗi cũng có thể được chỉ định với các số âm, trong trường hợp chỉ số xảy ra từ cuối chuỗi ngược:
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
70 đề cập đến ký tự cuối cùng, >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
71 ký tự thứ hai đến cuối cùng, v.v. Dưới đây là cùng một sơ đồ hiển thị cả các chỉ số dương và âm vào chuỗi >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
69:>>>
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
2Chỉ số chuỗi tích cực và tiêu cực
>>>
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
3Dưới đây là một số ví dụ về lập chỉ mục tiêu cực:
Cố gắng lập chỉ mục với các số âm ngoài đầu chuỗi dẫn đến một lỗi:
Đối với bất kỳ chuỗi không trống nào
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
31, >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
74 và >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
75 đều trả về ký tự cuối cùng. Có bất kỳ chỉ số nào có ý nghĩa đối với một chuỗi trống.>>>
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
4Chuỗi cắt
Python cũng cho phép một dạng cú pháp lập chỉ mục trích xuất các chuỗi con từ một chuỗi, được gọi là cắt chuỗi. Nếu
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
31 là một chuỗi, một biểu thức có dạng >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
77 trả về phần của >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
31 bắt đầu với vị trí >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
79 và lên đến nhưng không bao gồm vị trí >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
32:>>>
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
5Một lần nữa, chỉ số thứ hai chỉ định ký tự đầu tiên không được bao gồm trong kết quả, ký tự
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
81 (>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
82) trong ví dụ trên. Điều đó có vẻ hơi không trực quan, nhưng nó tạo ra kết quả này có ý nghĩa: Biểu thức >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
77 sẽ trả về một chuỗi con có chiều dài >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
84 ký tự, trong trường hợp này là >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
85.>>>
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
6Nếu bạn bỏ qua chỉ mục đầu tiên, lát cắt bắt đầu ở đầu chuỗi. Do đó,
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
86 và >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
87 tương đương:>>>
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
7Tương tự, nếu bạn bỏ qua chỉ mục thứ hai như trong
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
88, lát cắt kéo dài từ chỉ mục thứ nhất cho đến cuối chuỗi. Đây là một sự thay thế tốt đẹp, ngắn gọn cho >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
89 cồng kềnh hơn:>>>
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
8Đối với bất kỳ chuỗi
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
31 và bất kỳ số nguyên >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
32 (>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
92), >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
93 sẽ bằng >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
31:>>>
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
9Bỏ qua cả hai chỉ số trả về toàn bộ chuỗi ban đầu. Theo đúng nghĩa đen. Nó không phải là một bản sao, nó là một tham chiếu đến chuỗi ban đầu:
Nếu chỉ mục đầu tiên trong một lát cắt lớn hơn hoặc bằng chỉ số thứ hai, Python sẽ trả về một chuỗi trống. Đây là một cách khác bị che giấu để tạo ra một chuỗi trống, trong trường hợp bạn đang tìm kiếm một chuỗi:Các chỉ số tiêu cực có thể được sử dụng với việc cắt là tốt.
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
70 đề cập đến ký tự cuối cùng, >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
71 thứ hai đến cuối cùng, v.v., giống như với việc lập chỉ mục đơn giản. Sơ đồ dưới đây cho thấy cách cắt phần phụ >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
97 từ chuỗi >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
69 bằng cả các chỉ số dương và tiêu cực:>>>
>>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
0Chuỗi cắt với các chỉ số tích cực và tiêu cực
Đây là mã Python tương ứng:
Chỉ định sải bước trong một lát chuỗi
Có thêm một biến thể của cú pháp cắt lát để thảo luận. Thêm một>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
99 bổ sung và chỉ số thứ ba chỉ định một sải chân (còn được gọi là một bước), cho biết có bao nhiêu ký tự để nhảy sau khi lấy mỗi ký tự trong lát cắt.Ví dụ: đối với chuỗi
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
69, lát >>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
01 bắt đầu bằng ký tự đầu tiên và kết thúc bằng ký tự cuối cùng (toàn bộ chuỗi) và mỗi ký tự thứ hai đều được bỏ qua. Điều này được hiển thị trong sơ đồ sau:Một chỉ mục chuỗi khác với sải bướcMã thay thế minh họa được hiển thị ở đây:
>>>
>>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
1Như với bất kỳ sự cắt lát nào, các chỉ số thứ nhất và thứ hai có thể được bỏ qua và mặc định là các ký tự đầu tiên và cuối cùng tương ứng:
>>>
>>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
2Như với bất kỳ sự cắt lát nào, các chỉ số thứ nhất và thứ hai có thể được bỏ qua và mặc định là các ký tự đầu tiên và cuối cùng tương ứng:
>>>
>>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
3Như với bất kỳ sự cắt lát nào, các chỉ số thứ nhất và thứ hai có thể được bỏ qua và mặc định là các ký tự đầu tiên và cuối cùng tương ứng:
Bạn cũng có thể chỉ định giá trị sải bước âm, trong trường hợp Python bước lùi qua chuỗi. Trong trường hợp đó, chỉ mục bắt đầu/đầu tiên phải lớn hơn chỉ số kết thúc/thứ hai:
>>>
>>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
4Như với bất kỳ sự cắt lát nào, các chỉ số thứ nhất và thứ hai có thể được bỏ qua và mặc định là các ký tự đầu tiên và cuối cùng tương ứng:
>>>
>>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
5Như với bất kỳ sự cắt lát nào, các chỉ số thứ nhất và thứ hai có thể được bỏ qua và mặc định là các ký tự đầu tiên và cuối cùng tương ứng:
Bạn cũng có thể chỉ định giá trị sải bước âm, trong trường hợp Python bước lùi qua chuỗi. Trong trường hợp đó, chỉ mục bắt đầu/đầu tiên phải lớn hơn chỉ số kết thúc/thứ hai:f-string.
Trong ví dụ trên,
>>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
05 có nghĩa là bắt đầu ở nhân vật cuối cùng và bước lùi bằng >>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
04, cho đến nhưng không bao gồm nhân vật đầu tiên.Khi bạn bước lùi, nếu các chỉ số thứ nhất và thứ hai bị bỏ qua, các mặc định sẽ được đảo ngược theo cách trực quan: chỉ số thứ nhất mặc định đến cuối chuỗi và chỉ số thứ hai mặc định đến đầu. Đây là một ví dụ:
Đây là một mô hình phổ biến để đảo ngược một chuỗi:
>>>
>>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
6Như với bất kỳ sự cắt lát nào, các chỉ số thứ nhất và thứ hai có thể được bỏ qua và mặc định là các ký tự đầu tiên và cuối cùng tương ứng:
- Bạn cũng có thể chỉ định giá trị sải bước âm, trong trường hợp Python bước lùi qua chuỗi. Trong trường hợp đó, chỉ mục bắt đầu/đầu tiên phải lớn hơn chỉ số kết thúc/thứ hai:
- Trong ví dụ trên,
05 có nghĩa là bắt đầu ở nhân vật cuối cùng và bước lùi bằng>>> s = 'foo' >>> s in 'That\'s food for thought.' True >>> s in 'That\'s good for now.' False
04, cho đến nhưng không bao gồm nhân vật đầu tiên.>>> s = 'foo' >>> s in 'That\'s food for thought.' True >>> s in 'That\'s good for now.' False
Khi bạn bước lùi, nếu các chỉ số thứ nhất và thứ hai bị bỏ qua, các mặc định sẽ được đảo ngược theo cách trực quan: chỉ số thứ nhất mặc định đến cuối chuỗi và chỉ số thứ hai mặc định đến đầu. Đây là một ví dụ:
>>>
>>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
7Đây là một mô hình phổ biến để đảo ngược một chuỗi:
>>>
Nội suy các biến thành một chuỗiTrong Python phiên bản 3.6, một cơ chế định dạng chuỗi mới đã được giới thiệu. Tính năng này được đặt tên chính thức theo nghĩa đen của chuỗi được định dạng, nhưng thường được gọi bằng biệt danh F-String của nó.
Khả năng định dạng được cung cấp bởi F-Strings là rộng rãi và won được đề cập đầy đủ chi tiết ở đây. Nếu bạn muốn tìm hiểu thêm, bạn có thể xem bài viết Python thực sự Python 3, F F-Strings: Một cú pháp định dạng chuỗi được cải tiến (Hướng dẫn). Ngoài ra còn có một hướng dẫn về đầu ra được định dạng xuất hiện sau đó trong loạt bài này đào sâu hơn vào các chuỗi F.
Một tính năng đơn giản của chuỗi F bạn có thể bắt đầu sử dụng ngay lập tức là phép nội suy biến. Bạn có thể chỉ định một tên biến trực tiếp trong một chữ F theo nghĩa đen và Python sẽ thay thế tên bằng giá trị tương ứng.
>>>
>>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
9Ví dụ: giả sử bạn muốn hiển thị kết quả của một phép tính số học. Bạn có thể làm điều này với một câu lệnh
>>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
07 đơn giản, phân tách các giá trị số và chuỗi chữ theo dấu phẩy:>>>
>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
0Nhưng điều này thật cồng kềnh. Để hoàn thành điều tương tự bằng cách sử dụng chuỗi F:
>>>
>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
1Chỉ định chữ thường
>>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
08 hoặc chữ hoa >>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
09 trực tiếp trước khi trích dẫn mở của chuỗi theo nghĩa đen. Điều này cho Python nói rằng đó là một chuỗi F thay vì một chuỗi tiêu chuẩn.Chỉ định bất kỳ biến nào được nội suy trong niềng răng xoăn (>>> s = 'foo' >>> s in 'That\'s food for thought.' True >>> s in 'That\'s good for now.' False 10).
Recast Sử dụng chuỗi F, ví dụ trên trông sạch hơn nhiều:
Bất kỳ trong số ba cơ chế trích dẫn của Python có thể được sử dụng để xác định chuỗi F:
>>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
8
Sửa đổi chuỗi
Tóm lại, bạn có thể. Chuỗi là một trong những loại dữ liệu Python xem xét bất biến, có nghĩa là không thể thay đổi. Trên thực tế, tất cả các loại dữ liệu bạn đã thấy cho đến nay là bất biến. (Python không cung cấp các loại dữ liệu có thể thay đổi, như bạn sẽ sớm thấy.)
Một câu như thế này sẽ gây ra lỗi:
Trong thực tế, thực sự không cần phải sửa đổi chuỗi. Bạn thường có thể dễ dàng thực hiện những gì bạn muốn bằng cách tạo một bản sao của chuỗi ban đầu có sự thay đổi mong muốn tại chỗ. Có rất nhiều cách để làm điều này trong Python. Đây là một khả năng:
Ngoài ra còn có một phương thức chuỗi tích hợp để thực hiện điều này:
Đọc để biết thêm thông tin về các phương thức chuỗi tích hợp!
>>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
15Phương thức chuỗi tích hợp
Bạn đã học được trong hướng dẫn về các biến trong Python rằng Python là một ngôn ngữ định hướng đối tượng cao. Mỗi mục dữ liệu trong chương trình Python là một đối tượng.
>>>
>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
2Các ký tự không thay đổi không thay đổi:
>>>
>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
3>>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
18Chuyển đổi ký tự chữ cái thành chữ thường.
>>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
18 Trả về một bản sao >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
31 với tất cả các ký tự chữ cái được chuyển đổi thành chữ thường:>>>
Chuyển đổi ký tự chữ cái thành chữ thường.>>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
2118 Trả về một bản sao>>> s = 'foo' >>> s in 'That\'s food for thought.' True >>> s in 'That\'s good for now.' False
31 với tất cả các ký tự chữ cái được chuyển đổi thành chữ thường:>>> s = 'foo.' >>> s * 4 'foo.foo.foo.foo.' >>> 4 * s 'foo.foo.foo.foo.'
>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
4>>>
>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
5>>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
24Chuyển đổi ký tự chữ cái thành chữ thường.
>>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
18 Trả về một bản sao >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
31 với tất cả các ký tự chữ cái được chuyển đổi thành chữ thường:>>>
>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
6Chuyển đổi ký tự chữ cái thành chữ thường.
>>>
>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
7>>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
2718 Trả về một bản sao>>> s = 'foo' >>> s in 'That\'s food for thought.' True >>> s in 'That\'s good for now.' False
31 với tất cả các ký tự chữ cái được chuyển đổi thành chữ thường:>>> s = 'foo.' >>> s * 4 'foo.foo.foo.foo.' >>> 4 * s 'foo.foo.foo.foo.'
>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
4>>>
>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
8Hoán đổi trường hợp của các ký tự chữ cái.
>>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
21 Trả về một bản sao của >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
31 với các ký tự chữ cái chữ hoa được chuyển đổi thành chữ thường và ngược lại:Chuyển đổi chuỗi mục tiêu thành trường hợp tiêu đề.
>>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
3724 Trả về một bản sao của>>> s = 'foo' >>> s in 'That\'s food for thought.' True >>> s in 'That\'s good for now.' False
31 trong đó chữ cái đầu tiên của mỗi từ được chuyển đổi thành chữ hoa và các chữ cái còn lại là chữ thường:>>> s = 'foo.' >>> s * 4 'foo.foo.foo.foo.' >>> 4 * s 'foo.foo.foo.foo.'
Phương pháp này sử dụng một thuật toán khá đơn giản. Nó không cố gắng phân biệt giữa các từ quan trọng và không quan trọng, và nó không xử lý các dấu nháy đơn, sở hữu hoặc từ viết tắt một cách duyên dáng:
>>>
>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
9Chuyển đổi các ký tự chữ cái thành chữ hoa.
>>>
>>> ord('a')
97
>>> ord('#')
35
0>>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
4327 Trả về một bản sao>>> s = 'foo' >>> s in 'That\'s food for thought.' True >>> s in 'That\'s good for now.' False
31 với tất cả các ký tự chữ cái được chuyển đổi thành chữ hoa:>>> s = 'foo.' >>> s * 4 'foo.foo.foo.foo.' >>> 4 * s 'foo.foo.foo.foo.'
Tìm và thay thế
>>>
>>> ord('a')
97
>>> ord('#')
35
1Các phương pháp này cung cấp nhiều phương tiện khác nhau để tìm kiếm chuỗi mục tiêu cho một chuỗi con được chỉ định.
>>>
>>> ord('a')
97
>>> ord('#')
35
2>>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
51Mỗi phương thức trong nhóm này hỗ trợ các đối số
30 và>>> s = 'foo' >>> s in 'That\'s food for thought.' True >>> s in 'That\'s good for now.' False
31 tùy chọn. Chúng được giải thích là để cắt chuỗi: hành động của phương pháp được giới hạn ở phần của chuỗi đích bắt đầu ở vị trí ký tự>>> s = 'foo' >>> s in 'That\'s food for thought.' True >>> s in 'That\'s good for now.' False
30 và tiến hành đến nhưng không bao gồm vị trí ký tự>>> s = 'foo' >>> s in 'That\'s food for thought.' True >>> s in 'That\'s good for now.' False
31. Nếu>>> s = 'foo' >>> s in 'That\'s food for thought.' True >>> s in 'That\'s good for now.' False
30 được chỉ định nhưng>>> s = 'foo' >>> s in 'That\'s food for thought.' True >>> s in 'That\'s good for now.' False
31 thì không, phương thức áp dụng cho phần của chuỗi mục tiêu từ>>> s = 'foo' >>> s in 'That\'s food for thought.' True >>> s in 'That\'s good for now.' False
30 cho đến cuối chuỗi.>>> s = 'foo' >>> s in 'That\'s food for thought.' True >>> s in 'That\'s good for now.' False
Số lượng xảy ra của một chuỗi con trong chuỗi đích.
>>>
>>> ord('a')
97
>>> ord('#')
35
3>>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
38 Trả về số lần xuất hiện không chồng chéo của chuỗi con >>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
39 trong >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
31:>>>
>>> ord('a')
97
>>> ord('#')
35
4Số lượng được giới hạn ở số lần xuất hiện trong chuỗi con được chỉ định bởi
>>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
30 và >>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
31, nếu chúng được chỉ định:>>>
>>> ord('a')
97
>>> ord('#')
35
5>>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
59Mỗi phương thức trong nhóm này hỗ trợ các đối số
30 và>>> s = 'foo' >>> s in 'That\'s food for thought.' True >>> s in 'That\'s good for now.' False
31 tùy chọn. Chúng được giải thích là để cắt chuỗi: hành động của phương pháp được giới hạn ở phần của chuỗi đích bắt đầu ở vị trí ký tự>>> s = 'foo' >>> s in 'That\'s food for thought.' True >>> s in 'That\'s good for now.' False
30 và tiến hành đến nhưng không bao gồm vị trí ký tự>>> s = 'foo' >>> s in 'That\'s food for thought.' True >>> s in 'That\'s good for now.' False
31. Nếu>>> s = 'foo' >>> s in 'That\'s food for thought.' True >>> s in 'That\'s good for now.' False
30 được chỉ định nhưng>>> s = 'foo' >>> s in 'That\'s food for thought.' True >>> s in 'That\'s good for now.' False
31 thì không, phương thức áp dụng cho phần của chuỗi mục tiêu từ>>> s = 'foo' >>> s in 'That\'s food for thought.' True >>> s in 'That\'s good for now.' False
30 cho đến cuối chuỗi.>>> s = 'foo' >>> s in 'That\'s food for thought.' True >>> s in 'That\'s good for now.' False
Số lượng xảy ra của một chuỗi con trong chuỗi đích.
>>>
>>> ord('a')
97
>>> ord('#')
35
6
>>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
6338 Trả về số lần xuất hiện không chồng chéo của chuỗi con>>> s = 'foo' >>> s in 'That\'s food for thought.' True >>> s in 'That\'s good for now.' False
39 trong>>> s = 'foo' >>> s in 'That\'s food for thought.' True >>> s in 'That\'s good for now.' False
31:>>> s = 'foo.' >>> s * 4 'foo.foo.foo.foo.' >>> 4 * s 'foo.foo.foo.foo.'
Số lượng được giới hạn ở số lần xuất hiện trong chuỗi con được chỉ định bởi
>>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
30 và >>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
31, nếu chúng được chỉ định:>>>
>>> ord('a')
97
>>> ord('#')
35
7Xác định xem chuỗi đích kết thúc bằng một chuỗi con nhất định.
>>>
>>> ord('a')
97
>>> ord('#')
35
8Số lượng được giới hạn ở số lần xuất hiện trong chuỗi con được chỉ định bởi
>>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
30 và >>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
31, nếu chúng được chỉ định:>>>
>>> ord('a')
97
>>> ord('#')
35
9>>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
7138 Trả về số lần xuất hiện không chồng chéo của chuỗi con>>> s = 'foo' >>> s in 'That\'s food for thought.' True >>> s in 'That\'s good for now.' False
39 trong>>> s = 'foo' >>> s in 'That\'s food for thought.' True >>> s in 'That\'s good for now.' False
31:>>> s = 'foo.' >>> s * 4 'foo.foo.foo.foo.' >>> 4 * s 'foo.foo.foo.foo.'
Số lượng được giới hạn ở số lần xuất hiện trong chuỗi con được chỉ định bởi
>>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
30 và >>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
31, nếu chúng được chỉ định:>>>
Xác định xem chuỗi đích kết thúc bằng một chuỗi con nhất định.>>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
7544 Trả về>>> s = 'foo' >>> s in 'That\'s food for thought.' True >>> s in 'That\'s good for now.' False
41 nếu>>> s = 'foo.' >>> s * 4 'foo.foo.foo.foo.' >>> 4 * s 'foo.foo.foo.foo.'
31 kết thúc với>>> s = 'foo.' >>> s * 4 'foo.foo.foo.foo.' >>> 4 * s 'foo.foo.foo.foo.'
47 và>>> s = 'foo' >>> s in 'That\'s food for thought.' True >>> s in 'That\'s good for now.' False
42 được chỉ định nếu không:>>> s = 'foo.' >>> s * 4 'foo.foo.foo.foo.' >>> 4 * s 'foo.foo.foo.foo.'
Việc so sánh được giới hạn trong phần phụ được chỉ định bởi
>>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
30 và >>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
31, nếu chúng được chỉ định:>>>
>>> ord('€')
8364
>>> ord('∑')
8721
1Các phương pháp này cung cấp nhiều phương tiện khác nhau để tìm kiếm chuỗi mục tiêu cho một chuỗi con được chỉ định.
>>>
>>> ord('€')
8364
>>> ord('∑')
8721
2Mỗi phương thức trong nhóm này hỗ trợ các đối số >>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
30 và >>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
31 tùy chọn. Chúng được giải thích là để cắt chuỗi: hành động của phương pháp được giới hạn ở phần của chuỗi đích bắt đầu ở vị trí ký tự >>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
30 và tiến hành đến nhưng không bao gồm vị trí ký tự >>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
31. Nếu >>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
30 được chỉ định nhưng >>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
31 thì không, phương thức áp dụng cho phần của chuỗi mục tiêu từ >>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
30 cho đến cuối chuỗi.
>>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
>>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
>>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
>>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
>>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
>>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
>>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
Số lượng xảy ra của một chuỗi con trong chuỗi đích.
>>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
8438 Trả về số lần xuất hiện không chồng chéo của chuỗi con>>> s = 'foo' >>> s in 'That\'s food for thought.' True >>> s in 'That\'s good for now.' False
39 trong>>> s = 'foo' >>> s in 'That\'s food for thought.' True >>> s in 'That\'s good for now.' False
31:>>> s = 'foo.' >>> s * 4 'foo.foo.foo.foo.' >>> 4 * s 'foo.foo.foo.foo.'
Số lượng được giới hạn ở số lần xuất hiện trong chuỗi con được chỉ định bởi
>>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
30 và >>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
31, nếu chúng được chỉ định:>>>
>>> ord('€')
8364
>>> ord('∑')
8721
3>>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
89Xác định xem chuỗi đích kết thúc bằng một chuỗi con nhất định.
>>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
44 Trả về >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
41 nếu >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
31 kết thúc với >>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
47 và >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
42 được chỉ định nếu không:>>>
>>> ord('€')
8364
>>> ord('∑')
8721
4>>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
94Việc so sánh được giới hạn trong phần phụ được chỉ định bởi
30 và>>> s = 'foo' >>> s in 'That\'s food for thought.' True >>> s in 'That\'s good for now.' False
31, nếu chúng được chỉ định:>>> s = 'foo' >>> s in 'That\'s food for thought.' True >>> s in 'That\'s good for now.' False
Bạn có thể sử dụng phương thức
>>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
95 Python để kiểm tra xem chuỗi của bạn chỉ được làm bằng các chữ số. >>> s = 'foo'
>>> s in 'That\'s food for thought.'
True
>>> s in 'That\'s good for now.'
False
94 Trả về >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
41 nếu >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
31 không trống và tất cả các ký tự của nó là các chữ số số và >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
42 nếu không:>>>
>>> ord('€')
8364
>>> ord('∑')
8721
5>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
00Xác định xem chuỗi đích là định danh Python hợp lệ.
>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
00 Trả về >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
41 nếu >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
31 là định danh Python hợp lệ theo định nghĩa ngôn ngữ và >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
42 khác:>>>
>>> ord('€')
8364
>>> ord('∑')
8721
6>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
05Xác định xem chuỗi đích là định danh Python hợp lệ.
>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
00 Trả về >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
41 nếu >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
31 là định danh Python hợp lệ theo định nghĩa ngôn ngữ và >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
42 khác:>>>
>>> ord('€')
8364
>>> ord('∑')
8721
7>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
10Xác định xem chuỗi đích là định danh Python hợp lệ.
>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
00 Trả về >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
41 nếu >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
31 là định danh Python hợp lệ theo định nghĩa ngôn ngữ và >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
42 khác:>>>
>>> ord('€')
8364
>>> ord('∑')
8721
8>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
16Xác định xem chuỗi đích là định danh Python hợp lệ.
>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
00 Trả về >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
41 nếu >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
31 là định danh Python hợp lệ theo định nghĩa ngôn ngữ và >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
42 khác:Xác định xem các ký tự chữ cái của chuỗi đích là chữ thường.
>>>
>>> ord('€')
8364
>>> ord('∑')
8721
9>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
05 Trả về >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
41 nếu >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
31 không trống và tất cả các ký tự chữ cái mà nó chứa là chữ thường và >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
42 khác. Các ký tự không alphabetic bị bỏ qua:>>>
>>> chr(97)
'a'
>>> chr(35)
'#'
0Xác định xem chuỗi đích có bao gồm hoàn toàn các ký tự có thể in hay không.
>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
2710 Trả về>>> 'z' not in 'abc' True >>> 'z' not in 'xyz' False
41 nếu>>> s = 'foo.' >>> s * 4 'foo.foo.foo.foo.' >>> 4 * s 'foo.foo.foo.foo.'
31 trống hoặc tất cả các ký tự chữ cái mà nó chứa có thể in. Nó trả về>>> s = 'foo.' >>> s * 4 'foo.foo.foo.foo.' >>> 4 * s 'foo.foo.foo.foo.'
42 nếu>>> s = 'foo.' >>> s * 4 'foo.foo.foo.foo.' >>> 4 * s 'foo.foo.foo.foo.'
31 chứa ít nhất một ký tự không thể in. Các ký tự không alphabetic bị bỏ qua:>>> s = 'foo.' >>> s * 4 'foo.foo.foo.foo.' >>> 4 * s 'foo.foo.foo.foo.'
Xác định xem chuỗi đích có bao gồm các ký tự khoảng trắng hay không.
>>>
>>> chr(97)
'a'
>>> chr(35)
'#'
1>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
3216 Trả về>>> 'z' not in 'abc' True >>> 'z' not in 'xyz' False
41 nếu>>> s = 'foo.' >>> s * 4 'foo.foo.foo.foo.' >>> 4 * s 'foo.foo.foo.foo.'
31 là không trống và tất cả các ký tự là ký tự khoảng trắng và>>> s = 'foo.' >>> s * 4 'foo.foo.foo.foo.' >>> 4 * s 'foo.foo.foo.foo.'
42 khác.>>> s = 'foo.' >>> s * 4 'foo.foo.foo.foo.' >>> 4 * s 'foo.foo.foo.foo.'
Các ký tự khoảng trắng thường gặp nhất là Space
>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
21, Tab >>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
22 và Newline >>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
23:>>>
>>> chr(97)
'a'
>>> chr(35)
'#'
2Tuy nhiên, có một vài ký tự ASCII khác đủ điều kiện là khoảng trắng và nếu bạn chiếm các ký tự Unicode, còn có khá nhiều điều ngoài điều đó:
.
>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
37Xác định xem chuỗi đích là CASED TIÊU CHUẨN.
>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
27 Trả về >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
41 Nếu >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
31 là không trống, ký tự chữ cái đầu tiên của mỗi từ là chữ hoa và tất cả các ký tự chữ cái khác trong mỗi từ là chữ thường. Nó trả về >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
42 nếu không:>>>
>>> chr(97)
'a'
>>> chr(35)
'#'
3Xác định xem các ký tự chữ cái của chuỗi đích có phải là chữ hoa hay không.
>>>
>>> chr(97)
'a'
>>> chr(35)
'#'
4>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
32 Trả về >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
41 nếu >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
31 không trống và tất cả các ký tự chữ cái mà nó chứa là chữ hoa và >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
42 khác. Các ký tự không alphabetic bị bỏ qua:>>>
>>> chr(97)
'a'
>>> chr(35)
'#'
5>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
44Định dạng chuỗi
Các phương thức trong nhóm này sửa đổi hoặc tăng cường định dạng của một chuỗi.
>>>
>>> chr(97)
'a'
>>> chr(35)
'#'
6Tập trung một chuỗi trong một trường.
>>>
>>> chr(97)
'a'
>>> chr(35)
'#'
7>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
4838 Trả về một chuỗi bao gồm>>> 'z' not in 'abc' True >>> 'z' not in 'xyz' False
31 tập trung vào một trường có chiều rộng>>> s = 'foo.' >>> s * 4 'foo.foo.foo.foo.' >>> 4 * s 'foo.foo.foo.foo.'
40. Theo mặc định, phần đệm bao gồm ký tự không gian ASCII:>>> 'z' not in 'abc' True >>> 'z' not in 'xyz' False
Nếu đối số
>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
41 tùy chọn được chỉ định, nó được sử dụng làm ký tự đệm:>>>
>>> chr(97)
'a'
>>> chr(35)
'#'
8Xác định xem các ký tự chữ cái của chuỗi đích có phải là chữ hoa hay không.
>>>
>>> chr(97)
'a'
>>> chr(35)
'#'
9>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
32 Trả về >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
41 nếu >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
31 không trống và tất cả các ký tự chữ cái mà nó chứa là chữ hoa và >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
42 khác. Các ký tự không alphabetic bị bỏ qua:>>>
>>> chr(8364)
'€'
>>> chr(8721)
'∑'
0>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
55Định dạng chuỗi
Các phương thức trong nhóm này sửa đổi hoặc tăng cường định dạng của một chuỗi.
>>>
>>> chr(8364)
'€'
>>> chr(8721)
'∑'
1Tập trung một chuỗi trong một trường.
>>>
>>> chr(8364)
'€'
>>> chr(8721)
'∑'
2>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
5938 Trả về một chuỗi bao gồm>>> 'z' not in 'abc' True >>> 'z' not in 'xyz' False
31 tập trung vào một trường có chiều rộng>>> s = 'foo.' >>> s * 4 'foo.foo.foo.foo.' >>> 4 * s 'foo.foo.foo.foo.'
40. Theo mặc định, phần đệm bao gồm ký tự không gian ASCII:>>> 'z' not in 'abc' True >>> 'z' not in 'xyz' False
Nếu đối số
>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
41 tùy chọn được chỉ định, nó được sử dụng làm ký tự đệm:>>>
>>> chr(8364)
'€'
>>> chr(8721)
'∑'
3Nếu
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
31 đã ít nhất là >>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
40, thì nó sẽ được trả lại không thay đổi:>>>
>>> chr(8364)
'€'
>>> chr(8721)
'∑'
4>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
68Mở rộng các tab trong một chuỗi.
>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
45 Thay thế từng ký tự tab (>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
22) bằng khoảng trắng. Theo mặc định, các không gian được điền vào giả sử dừng tab ở mỗi cột thứ tám:>>>
>>> chr(8364)
'€'
>>> chr(8721)
'∑'
5Xác định xem các ký tự chữ cái của chuỗi đích có phải là chữ hoa hay không.
>>>
>>> chr(8364)
'€'
>>> chr(8721)
'∑'
6Nếu
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
31 đã ít nhất là >>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
40, thì nó sẽ được trả lại không thay đổi:>>>
>>> chr(8364)
'€'
>>> chr(8721)
'∑'
7>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
75Trims Trailing ký tự từ một chuỗi.
>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
76 Trả về một bản sao của >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
31 với bất kỳ ký tự khoảng trắng nào bị xóa khỏi đầu bên phải:>>>
>>> chr(8364)
'€'
>>> chr(8721)
'∑'
8Nếu đối số
>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
58 tùy chọn được chỉ định, thì đó là một chuỗi chỉ định tập hợp các ký tự sẽ bị xóa:>>>
>>> chr(8364)
'€'
>>> chr(8721)
'∑'
9>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
79Dải các ký tự từ đầu trái và bên phải của một chuỗi.
>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
80 về cơ bản tương đương với việc gọi >>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
56 và >>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
76 liên tiếp. Không có lập luận >>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
58, nó sẽ loại bỏ khoảng trắng dẫn đầu và dấu vết:>>>
>>> s = 'I am a string.'
>>> len(s)
14
0Như với
>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
84 và >>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
85, đối số >>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
58 tùy chọn Chỉ định tập hợp các ký tự sẽ bị xóa:>>>
>>> s = 'I am a string.'
>>> len(s)
14
1>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
87Miếng đệm một chuỗi ở bên trái với số không.
>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
87 Trả về một bản sao của >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
31 được gắn bên trái với >>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
90 ký tự cho >>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
40 được chỉ định:>>>
>>> s = 'I am a string.'
>>> len(s)
14
2Nếu
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
31 chứa một dấu hiệu hàng đầu, nó vẫn ở cạnh trái của chuỗi kết quả sau khi số 0 được chèn:>>>
>>> s = 'I am a string.'
>>> len(s)
14
3Nếu
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
31 đã ít nhất là >>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
40, thì nó sẽ được trả lại không thay đổi:>>>
Trims Trailing ký tự từ một chuỗi.>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
76 Trả về một bản sao của >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
31 với bất kỳ ký tự khoảng trắng nào bị xóa khỏi đầu bên phải:>>>
>>> s = 'I am a string.'
>>> len(s)
14
5Nếu đối số >>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
58 tùy chọn được chỉ định, thì đó là một chuỗi chỉ định tập hợp các ký tự sẽ bị xóa:
>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
Dải các ký tự từ đầu trái và bên phải của một chuỗi.
>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
80 về cơ bản tương đương với việc gọi >>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
56 và >>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
76 liên tiếp. Không có lập luận >>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
58, nó sẽ loại bỏ khoảng trắng dẫn đầu và dấu vết:iterables, the general Python term for a sequential collection of objects. You will explore the inner workings of iterables in much more detail in the upcoming tutorial on definite iteration.Như với
>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
84 và >>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
85, đối số >>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
58 tùy chọn Chỉ định tập hợp các ký tự sẽ bị xóa:Miếng đệm một chuỗi ở bên trái với số không.
>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
9887 Trả về một bản sao của>>> 'z' not in 'abc' True >>> 'z' not in 'xyz' False
31 được gắn bên trái với>>> s = 'foo.' >>> s * 4 'foo.foo.foo.foo.' >>> 4 * s 'foo.foo.foo.foo.'
90 ký tự cho>>> 'z' not in 'abc' True >>> 'z' not in 'xyz' False
40 được chỉ định:>>> 'z' not in 'abc' True >>> 'z' not in 'xyz' False
Nếu
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
31 chứa một dấu hiệu hàng đầu, nó vẫn ở cạnh trái của chuỗi kết quả sau khi số 0 được chèn:>>> s = 'I am a string.'
>>> len(s)
14
4>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
95 hữu ích nhất cho các biểu diễn chuỗi của các số, nhưng Python vẫn sẽ vui vẻ không có một chuỗi mà không phải là một chuỗi:>>>
>>> s = 'I am a string.'
>>> len(s)
14
6Chuyển đổi giữa các chuỗi và danh sách
Các phương thức trong nhóm này chuyển đổi giữa một chuỗi và một số loại dữ liệu tổng hợp bằng cách dán các đối tượng lại với nhau để tạo một chuỗi hoặc bằng cách chia một chuỗi thành từng mảnh.
>>>
>>> s = 'I am a string.'
>>> len(s)
14
7Các phương thức này hoạt động trên hoặc trả về Iterables, thuật ngữ Python chung cho một bộ sưu tập các đối tượng tuần tự. Bạn sẽ khám phá các hoạt động bên trong của Iterables một cách chi tiết hơn nhiều trong hướng dẫn sắp tới về lặp lại xác định.
Nhiều phương pháp trong số này trả về một danh sách hoặc một tuple. Đây là hai loại dữ liệu tổng hợp tương tự là các ví dụ nguyên mẫu của các vòng lặp trong Python. Chúng được đề cập trong hướng dẫn tiếp theo, vì vậy bạn sẽ sớm tìm hiểu về chúng! Cho đến lúc đó, chỉ cần nghĩ về chúng như là chuỗi của các giá trị. Một danh sách được đặt trong ngoặc vuông (
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
66) và một tuple được đặt trong ngoặc đơn (>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False
97).>>>
>>> s = 'I am a string.'
>>> len(s)
14
8Với phần giới thiệu đó, hãy để Lôi xem xét nhóm các phương thức chuỗi cuối cùng này.
>>>
>>> s = 'I am a string.'
>>> len(s)
14
9Concatenates chuỗi từ một điều đó.
>>> ord('a')
97
>>> ord('#')
35
1498 Trả về chuỗi kết quả từ việc ghép các đối tượng trong>>> 'z' not in 'abc' True >>> 'z' not in 'xyz' False
00 được phân tách bằng>>> ord('a') 97 >>> ord('#') 35
31.>>> s = 'foo.' >>> s * 4 'foo.foo.foo.foo.' >>> 4 * s 'foo.foo.foo.foo.'
Lưu ý rằng
>>> ord('a')
97
>>> ord('#')
35
02 được gọi trên >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
31, chuỗi phân tách. >>> ord('a')
97
>>> ord('#')
35
00 cũng phải là một chuỗi các đối tượng chuỗi.- Một số mã mẫu sẽ giúp làm rõ. Trong ví dụ sau, dấu phân cách
31 là chuỗi>>> s = 'foo.' >>> s * 4 'foo.foo.foo.foo.' >>> 4 * s 'foo.foo.foo.foo.'
06 và>>> ord('a') 97 >>> ord('#') 35
00 là danh sách các giá trị chuỗi:>>> ord('a') 97 >>> ord('#') 35
- Kết quả là một chuỗi duy nhất bao gồm các đối tượng danh sách được phân tách bằng dấu phẩy.
- Trong ví dụ tiếp theo,
00 được chỉ định là một giá trị chuỗi đơn. Khi một giá trị chuỗi được sử dụng như là một điều không thể điều chỉnh được, nó được hiểu là một danh sách các ký tự riêng lẻ chuỗi:>>> ord('a') 97 >>> ord('#') 35
Do đó, kết quả của
>>> ord('a')
97
>>> ord('#')
35
09 là một chuỗi bao gồm mỗi ký tự trong >>> ord('a')
97
>>> ord('#')
35
10 được phân tách bằng >>> ord('a')
97
>>> ord('#')
35
11.>>>
>>> str(49.2)
'49.2'
>>> str(3+4j)
'(3+4j)'
>>> str(3 + 29)
'32'
>>> str('foo')
'foo'
0Ví dụ này không thành công vì một trong các đối tượng trong
>>> ord('a')
97
>>> ord('#')
35
00 không phải là một chuỗi:>>>
>>> str(49.2)
'49.2'
>>> str(3+4j)
'(3+4j)'
>>> str(3 + 29)
'32'
>>> str('foo')
'foo'
1>>> ord('a')
97
>>> ord('#')
35
2798 Trả về chuỗi kết quả từ việc ghép các đối tượng trong>>> 'z' not in 'abc' True >>> 'z' not in 'xyz' False
00 được phân tách bằng>>> ord('a') 97 >>> ord('#') 35
31.>>> s = 'foo.' >>> s * 4 'foo.foo.foo.foo.' >>> 4 * s 'foo.foo.foo.foo.'
Lưu ý rằng
>>> ord('a')
97
>>> ord('#')
35
02 được gọi trên >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
31, chuỗi phân tách. >>> ord('a')
97
>>> ord('#')
35
00 cũng phải là một chuỗi các đối tượng chuỗi.>>>
>>> str(49.2)
'49.2'
>>> str(3+4j)
'(3+4j)'
>>> str(3 + 29)
'32'
>>> str('foo')
'foo'
2>>> ord('a')
97
>>> ord('#')
35
32Một số mã mẫu sẽ giúp làm rõ. Trong ví dụ sau, dấu phân cách
31 là chuỗi>>> s = 'foo.' >>> s * 4 'foo.foo.foo.foo.' >>> 4 * s 'foo.foo.foo.foo.'
06 và>>> ord('a') 97 >>> ord('#') 35
00 là danh sách các giá trị chuỗi:>>> ord('a') 97 >>> ord('#') 35
Kết quả là một chuỗi duy nhất bao gồm các đối tượng danh sách được phân tách bằng dấu phẩy.
>>>
>>> str(49.2)
'49.2'
>>> str(3+4j)
'(3+4j)'
>>> str(3 + 29)
'32'
>>> str('foo')
'foo'
3Trong ví dụ tiếp theo,
>>> ord('a')
97
>>> ord('#')
35
00 được chỉ định là một giá trị chuỗi đơn. Khi một giá trị chuỗi được sử dụng như là một điều không thể điều chỉnh được, nó được hiểu là một danh sách các ký tự riêng lẻ chuỗi:>>>
>>> str(49.2)
'49.2'
>>> str(3+4j)
'(3+4j)'
>>> str(3 + 29)
'32'
>>> str('foo')
'foo'
4Do đó, kết quả của
>>> ord('a')
97
>>> ord('#')
35
09 là một chuỗi bao gồm mỗi ký tự trong >>> ord('a')
97
>>> ord('#')
35
10 được phân tách bằng >>> ord('a')
97
>>> ord('#')
35
11.Khi
>>> ord('a')
97
>>> ord('#')
35
17 được đưa ra một cách rõ ràng dưới dạng phân định, các phân định liên tiếp trong >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
31 được coi là phân định các chuỗi trống, sẽ được trả về:>>>
>>> str(49.2)
'49.2'
>>> str(3+4j)
'(3+4j)'
>>> str(3 + 29)
'32'
>>> str('foo')
'foo'
5Đây không phải là trường hợp khi
>>> ord('a')
97
>>> ord('#')
35
17 bị bỏ qua, tuy nhiên. Trong trường hợp đó, các ký tự khoảng trắng liên tiếp được kết hợp thành một dấu phân cách duy nhất và danh sách kết quả sẽ không bao giờ chứa các chuỗi trống:>>>
>>> str(49.2)
'49.2'
>>> str(3+4j)
'(3+4j)'
>>> str(3 + 29)
'32'
>>> str('foo')
'foo'
6Đây không phải là trường hợp khi
>>> ord('a')
97
>>> ord('#')
35
17 bị bỏ qua, tuy nhiên. Trong trường hợp đó, các ký tự khoảng trắng liên tiếp được kết hợp thành một dấu phân cách duy nhất và danh sách kết quả sẽ không bao giờ chứa các chuỗi trống:>>>
>>> str(49.2)
'49.2'
>>> str(3+4j)
'(3+4j)'
>>> str(3 + 29)
'32'
>>> str('foo')
'foo'
7Đây không phải là trường hợp khi
>>> ord('a')
97
>>> ord('#')
35
17 bị bỏ qua, tuy nhiên. Trong trường hợp đó, các ký tự khoảng trắng liên tiếp được kết hợp thành một dấu phân cách duy nhất và danh sách kết quả sẽ không bao giờ chứa các chuỗi trống:>>>
>>> str(49.2)
'49.2'
>>> str(3+4j)
'(3+4j)'
>>> str(3 + 29)
'32'
>>> str('foo')
'foo'
8>>> ord('a')
97
>>> ord('#')
35
47Đây không phải là trường hợp khi
17 bị bỏ qua, tuy nhiên. Trong trường hợp đó, các ký tự khoảng trắng liên tiếp được kết hợp thành một dấu phân cách duy nhất và danh sách kết quả sẽ không bao giờ chứa các chuỗi trống:>>> ord('a') 97 >>> ord('#') 35
Nếu tham số từ khóa tùy chọn
>>> ord('a')
97
>>> ord('#')
35
42 được chỉ định, tối đa của nhiều lần chia tách được thực hiện, bắt đầu từ đầu bên phải của >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
31:>>>
>>> str(49.2)
'49.2'
>>> str(3+4j)
'(3+4j)'
>>> str(3 + 29)
'32'
>>> str('foo')
'foo'
9Đây không phải là trường hợp khi
>>> ord('a')
97
>>> ord('#')
35
17 bị bỏ qua, tuy nhiên. Trong trường hợp đó, các ký tự khoảng trắng liên tiếp được kết hợp thành một dấu phân cách duy nhất và danh sách kết quả sẽ không bao giờ chứa các chuỗi trống:>>> ord('a')
97
>>> ord('#')
35
55Nếu tham số từ khóa tùy chọn
42 được chỉ định, tối đa của nhiều lần chia tách được thực hiện, bắt đầu từ đầu bên phải của>>> ord('a') 97 >>> ord('#') 35
31:>>> s = 'foo.' >>> s * 4 'foo.foo.foo.foo.' >>> 4 * s 'foo.foo.foo.foo.'
Giá trị mặc định cho
>>> ord('a')
97
>>> ord('#')
35
42 là >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
70, điều đó có nghĩa là tất cả các chia tách có thể được thực hiện, giống như nếu >>> ord('a')
97
>>> ord('#')
35
42 bị bỏ qua hoàn toàn:
Chia một chuỗi vào một danh sách các chuỗi con. | 48 hoạt động chính xác giống như 33, ngoại trừ nếu 42 được chỉ định, phân tách được tính từ đầu trái của 31 thay vì đầu bên phải: |
---|---|
Nếu 42 không được chỉ định, 53 và 54 không thể phân biệt được. | Phá vỡ một chuỗi ở ranh giới dòng. |
56 tách 31 lên thành các dòng và trả lại chúng trong một danh sách. Bất kỳ nhân vật hoặc chuỗi ký tự nào sau đây đều được coi là tạo thành ranh giới dòng: | Trình tự thoát |
Tính cách | 58 |
Dòng mới | 59 |
Vận chuyển trở lại | 60 |
Vận chuyển trở lại + nguồn cấp dữ liệu dòng | 61 hoặc 62 |
Tabline | 63 hoặc 64 |
Thức ăn dạng | 65 |
Bộ phân cách tập tin | 66 |
Phân tách nhóm | 67 |
Ghi điểm phân tách | 68 |
Dòng tiếp theo (Mã điều khiển C1)
>>>
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
00>>> ord('a')
97
>>> ord('#')
35
69>>>
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
01Dòng phân tách dòng Unicode
>>>
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
02>>> ord('a') 97 >>> ord('#') 35 70
Phân tách đoạn Unicode
Dưới đây là một ví dụ sử dụng một số dấu phân cách dòng khác nhau:
Nếu các ký tự ranh giới dòng liên tiếp có mặt trong chuỗi, chúng được giả định là phân định các dòng trống, sẽ xuất hiện trong danh sách kết quả:
>>>
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
03Nếu đối số
>>> ord('a')
97
>>> ord('#')
35
71 tùy chọn được chỉ định và là sự thật, thì các ranh giới các dòng được giữ lại trong các chuỗi kết quả:>>>
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
04>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
23 Đối tượng>>>
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
05Đối tượng
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
23 là một trong những loại tích hợp cốt lõi để thao tác dữ liệu nhị phân. Đối tượng >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
23 là một chuỗi bất biến của các giá trị byte đơn. Mỗi phần tử trong một đối tượng >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
23 là một số nguyên nhỏ trong phạm vi >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
67 đến >>> ord('a')
97
>>> ord('#')
35
77.>>>
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
06Xác định một đối tượng >>> s = 'foo.' >>> s * 4 'foo.foo.foo.foo.' >>> 4 * s 'foo.foo.foo.foo.' 23 theo nghĩa đen
Một chữ
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
23 được định nghĩa theo cùng một cách như một chuỗi theo nghĩa đen với việc thêm tiền tố >>> ord('a')
97
>>> ord('#')
35
80:>>> ord('a')
97
>>> ord('#')
35
90Cũng như các chuỗi, bạn có thể sử dụng bất kỳ cơ chế trích dẫn đơn, đôi hoặc ba:
Chỉ các ký tự ASCII được phép theo nghĩa đen
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
23. Bất kỳ giá trị ký tự nào lớn hơn >>> ord('a')
97
>>> ord('#')
35
82 phải được chỉ định bằng cách sử dụng trình tự thoát thích hợp:>>>
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
07>>> ord('a')
97
>>> ord('#')
35
97Tiền tố
81 có thể được sử dụng trên>>> s = 'foo.' >>> s * 4 'foo.foo.foo.foo.' >>> 4 * s 'foo.foo.foo.foo.'
23 theo nghĩa đen để vô hiệu hóa xử lý các chuỗi thoát, như với các chuỗi:>>> s = 'foo.' >>> s * 4 'foo.foo.foo.foo.' >>> 4 * s 'foo.foo.foo.foo.'
Xác định đối tượng
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
23 với hàm >>> ord('a')
97
>>> ord('#')
35
86 tích hợp>>>
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
08>>> ord('€')
8364
>>> ord('∑')
8721
05Hàm
86 cũng tạo ra một đối tượng>>> ord('a') 97 >>> ord('#') 35
23. Loại đối tượng>>> s = 'foo.' >>> s * 4 'foo.foo.foo.foo.' >>> 4 * s 'foo.foo.foo.foo.'
23 nào được trả về phụ thuộc vào (các) đối số được truyền cho hàm. Các hình thức có thể được hiển thị dưới đây.>>> s = 'foo.' >>> s * 4 'foo.foo.foo.foo.' >>> 4 * s 'foo.foo.foo.foo.'
Tạo một đối tượng
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
23 từ một chuỗi.>>>
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
09>>> ord('a') 97 >>> ord('#') 35 90 Chuyển đổi chuỗi >>> ord('a') 97 >>> ord('#') 35 93 thành đối tượng >>> s = 'foo.' >>> s * 4 'foo.foo.foo.foo.' >>> 4 * s 'foo.foo.foo.foo.' 23, sử dụng >>> ord('a') 97 >>> ord('#') 35 95 theo quy định >>> ord('a') 97 >>> ord('#') 35 96:
Tạo một đối tượng
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
23 bao gồm null (>>> ord('a')
97
>>> ord('#')
35
99) byte.
97 Xác định một đối tượng>>> ord('a') 97 >>> ord('#') 35
23 của>>> s = 'foo.' >>> s * 4 'foo.foo.foo.foo.' >>> 4 * s 'foo.foo.foo.foo.'
02 được chỉ định, phải là một số nguyên dương. Đối tượng>>> ord('€') 8364 >>> ord('∑') 8721
23 kết quả được khởi tạo thành null (>>> s = 'foo.' >>> s * 4 'foo.foo.foo.foo.' >>> 4 * s 'foo.foo.foo.foo.'
99) byte:>>> ord('a') 97 >>> ord('#') 35
>>>
10>>> s = 'foo.' >>> s * 4 'foo.foo.foo.foo.' >>> 4 * s 'foo.foo.foo.foo.'
Tạo một đối tượng
23 từ một điều không thể.>>> s = 'foo.' >>> s * 4 'foo.foo.foo.foo.' >>> 4 * s 'foo.foo.foo.foo.'
>>>
11>>> s = 'foo.' >>> s * 4 'foo.foo.foo.foo.' >>> 4 * s 'foo.foo.foo.foo.'
05 xác định một đối tượng>>> ord('€') 8364 >>> ord('∑') 8721
23 từ chuỗi số nguyên được tạo bởi>>> s = 'foo.' >>> s * 4 'foo.foo.foo.foo.' >>> 4 * s 'foo.foo.foo.foo.'
00.>>> ord('a') 97 >>> ord('#') 35
00 phải là một điều có thể tạo ra một chuỗi số nguyên>>> ord('a') 97 >>> ord('#') 35
32 trong phạm vi>>> s = 'foo.' >>> s * 4 'foo.foo.foo.foo.' >>> 4 * s 'foo.foo.foo.foo.'
12:>>> ord('€') 8364 >>> ord('∑') 8721
>>>
12>>> s = 'foo.' >>> s * 4 'foo.foo.foo.foo.' >>> 4 * s 'foo.foo.foo.foo.'
Hoạt động trên các đối tượng
23>>> s = 'foo.' >>> s * 4 'foo.foo.foo.foo.' >>> 4 * s 'foo.foo.foo.foo.'
>>>
13>>> s = 'foo.' >>> s * 4 'foo.foo.foo.foo.' >>> 4 * s 'foo.foo.foo.foo.'
Giống như các chuỗi, các đối tượng
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
23 hỗ trợ các hoạt động trình tự chung:>>>
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
14Các toán tử
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
39 và >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
43:>>>
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
15Các toán tử nối (
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
25) và sao chép (>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
26):>>>
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
16Một lát cắt được hiển thị dưới dạng đối tượng
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
23, ngay cả khi nó chỉ dài một byte:Bạn có thể chuyển đổi đối tượng
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
23 thành danh sách các số nguyên với hàm >>> ord('€')
8364
>>> ord('∑')
8721
28 tích hợp:>>>
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
17Các số thập lục phân thường được sử dụng để chỉ định dữ liệu nhị phân vì hai chữ số thập lục phân tương ứng trực tiếp với một byte duy nhất. Lớp
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
23 hỗ trợ hai phương pháp bổ sung tạo điều kiện chuyển đổi đến và từ một chuỗi các chữ số thập lục phân.>>> ord('€')
8364
>>> ord('∑')
8721
30Trả về một đối tượng
23 được xây dựng từ một chuỗi các giá trị thập lục phân.>>> s = 'foo.' >>> s * 4 'foo.foo.foo.foo.' >>> 4 * s 'foo.foo.foo.foo.'
>>> ord('€')
8364
>>> ord('∑')
8721
30 Trả về đối tượng >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
23 xuất phát từ việc chuyển đổi từng cặp chữ số thập lục phân trong >>> ord('a')
97
>>> ord('#')
35
93 sang giá trị byte tương ứng. Các cặp chữ số thập lục phân trong >>> ord('a')
97
>>> ord('#')
35
93 có thể tùy chọn được phân tách bằng khoảng trắng, bị bỏ qua:>>>
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
18>>> ord('€')
8364
>>> ord('∑')
8721
36Trả về một chuỗi giá trị thập lục phân từ đối tượng
23.>>> s = 'foo.' >>> s * 4 'foo.foo.foo.foo.' >>> 4 * s 'foo.foo.foo.foo.'
>>> ord('€')
8364
>>> ord('∑')
8721
36 Trả về kết quả của việc chuyển đổi đối tượng >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
23 >>> ord('€')
8364
>>> ord('∑')
8721
40 thành một chuỗi các cặp chữ số thập lục phân. Đó là, nó làm ngược lại >>> ord('€')
8364
>>> ord('∑')
8721
41:>>>
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
19>>> s = 'foo.' >>> s * 4 'foo.foo.foo.foo.' >>> 4 * s 'foo.foo.foo.foo.' 24 Đối tượng
Python hỗ trợ một loại chuỗi nhị phân khác được gọi là
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
24. Các đối tượng >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
24 rất giống đối tượng >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
23, mặc dù có một số khác biệt:Không có cú pháp chuyên dụng được tích hợp vào Python để xác định nghĩa đen
24, như tiền tố>>> s = 'foo.' >>> s * 4 'foo.foo.foo.foo.' >>> 4 * s 'foo.foo.foo.foo.'
80 có thể được sử dụng để xác định đối tượng>>> ord('a') 97 >>> ord('#') 35
23. Đối tượng>>> s = 'foo.' >>> s * 4 'foo.foo.foo.foo.' >>> 4 * s 'foo.foo.foo.foo.'
24 luôn được tạo bằng chức năng tích hợp>>> s = 'foo.' >>> s * 4 'foo.foo.foo.foo.' >>> 4 * s 'foo.foo.foo.foo.'
50:>>> ord('€') 8364 >>> ord('∑') 8721
>>>
20>>> s = 'foo.' >>> s * 4 'foo.foo.foo.foo.' >>> 4 * s 'foo.foo.foo.foo.'
Các đối tượng
24 có thể thay đổi. Bạn có thể sửa đổi nội dung của đối tượng>>> s = 'foo.' >>> s * 4 'foo.foo.foo.foo.' >>> 4 * s 'foo.foo.foo.foo.'
24 bằng cách sử dụng lập chỉ mục và cắt:>>> s = 'foo.' >>> s * 4 'foo.foo.foo.foo.' >>> 4 * s 'foo.foo.foo.foo.'
>>>
21>>> s = 'foo.' >>> s * 4 'foo.foo.foo.foo.' >>> 4 * s 'foo.foo.foo.foo.'
Đối tượng
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
24 cũng có thể được xây dựng trực tiếp từ đối tượng >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
23:>>>
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
22
Sự kết luận
Hướng dẫn này cung cấp một cái nhìn sâu sắc về nhiều cơ chế khác nhau mà Python cung cấp cho việc xử lý chuỗi, bao gồm các toán tử chuỗi, các chức năng tích hợp, lập chỉ mục, cắt và các phương pháp tích hợp. Bạn cũng được giới thiệu các loại
>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
23 và >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
24.string handling, including string operators, built-in functions, indexing, slicing, and built-in methods. You also were introduced to the >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
23 and >>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
24 types.Những loại này là những loại đầu tiên bạn đã kiểm tra là tổng hợp được xây dựng từ một bộ sưu tập các phần nhỏ hơn. Python cung cấp một số loại tích hợp tổng hợp. Trong hướng dẫn tiếp theo, bạn sẽ khám phá hai trong số các loại được sử dụng thường xuyên nhất: danh sách và bộ dữ liệu.lists and tuples.
Xem bây giờ hướng dẫn này có một khóa học video liên quan được tạo bởi nhóm Python thực sự. Xem nó cùng với hướng dẫn bằng văn bản để làm sâu sắc thêm sự hiểu biết của bạn: chuỗi và dữ liệu nhân vật trong Python This tutorial has a related video course created by the Real Python team. Watch it together with the written tutorial to deepen your understanding: Strings and Character Data in Python