So sánh một chuỗi với kí tự trắng trong python

Chuỗi kí tự trong Python là một chuỗi các ký tự. Chuỗi là bất biến. Điều này có nghĩa là khi bạn định nghĩa 1 chuỗi kí tự, chúng sẽ không thể thay đổi được. Nhiều phương thức Python, chẳng hạn như replace(), join() hoặc split() sửa đổi các chuỗi. Tuy nhiên, các hàm không sửa đổi chuỗi kí tự ban đầu. Các hàm này chỉ tạo một bản sao của một chuỗi và trả về chuỗi bản sao đó.

Các kí tự trong chuỗi kí tự

Chuỗi Python có thể được tạo bằng dấu ngoặc kép, dấu ngoặc kép hoặc dấu ngoặc kép. Khi chúng ta sử dụng dấu ngoặc kép, các chuỗi có thể kéo dài nhiều dòng mà không cần sử dụng ký tự xuống dòng.

Ví dụ 1: khai báo string

string_literals.py

a = "proximity alert" b = 'evacuation' c = """ requiem for a tower """ print(a) print(b) print(c) Chúng ta gán ba ký tự chuỗi cho các biến a, b và c. Và chúng tôi in chúng ra màn hình console Kết quả:

proximity alert evacuation requiem for a tower

Unicode

Để tạo unicode string, add thêm u hoặc U vào đầu mỗi string như ví dụ sau:

Ví dụ 2: Unicode string

text = u'\u041b\u0435\u0432 \u041d\u0438\u043a\u043e\u043b\u0430\ \u0435\u0432\u0438\u0447 \u0422\u043e\u043b\u0441\u0442\u043e\u0439: \n\ \u0410\u043d\u043d\u0430 \u041a\u0430\u0440\u0435\u043d\u0438\u043d\u0430' print(text) Kết quả in ra chuỗi tiếng Nga

C:\Programs\Python\Python37>python.exe test.py Лев Николаевич Толстой: Анна Каренина Ngoài ra, chúng ta có thể sử dụng kí tự tiếng Nga luôn khi define string. Ví dụ 3: Unicode string

text = 'Лев Николаевич Толстой: Анна Каренина' print(text) Kết quả script unicode2.py là

C:\Programs\Python\Python37>python.exe test.py Лев Николаевич Толстой: Анна Каренина

Quote

String trong Python được phân cách bằng các kí tự nháy đơn hoặc nháy kép. Điều gì sẽ xảy ra nếu chúng ta muốn hiển thị dấu ngoặc kép, chẳng hạn như để trích dẫn câu nói, bài phát biểu. Có hai cách cơ bản để làm điều này.

Ví dụ 4: Quote trong string

print("There are many stars.") print("He said, \"Which one is your favourite?\"") print('There are many stars.') print('He said, "Which one is your favourite?"') Chúng ta sử dụng kí tự \” để thêm kí tự ” vào string. Kết quả:

There are many stars. He said, "Which one is your favourite?" There are many stars. He said, "Which one is your favourite?"

Chiều dài string

Hàm len() đếm số lượng kí tự string, bao gồm cả kí tự space. Ví dụ 5: đếm số lượng kí tự string

s1 = "Eagle" s2 = "Eagle\n" s3 = "Eagle " print(len(s1)) print(len(s2)) print(len(s3)) Ví dụ 6: tính chiều dài của string s1,s2,s3

s1 = "Eagle" s2 = "Eagle\n" s3 = "Eagle " Define 3 string. String s2 chứa kí tự xuống dòng \n. String s3 chứa kí tự space.

proximity alert evacuation requiem for a tower 0

Sử dụng hàm len() có sẵn trong Python để đo chiều dài string.

Kết quả:

proximity alert evacuation requiem for a tower 1

Từ kết quả chúng ta có thể thấy hàm len() đếm cả kí tự đặc biệt như xuống dòng, kí tự space.

Hàm loại bỏ kí tự trắng

Trong xử lý string, chúng ta thường kết thúc chuỗi với kí tự space ở đầu hoặc cuối string. Space được biết đến như kí tự xuống dòng, tab, space hoặc kí tự điều khiển. Chúng ta có hàm strip(), lstrip() và rstrip() để xóa các kí tự này. Ví dụ 7: Xóa kí tự space

proximity alert evacuation requiem for a tower 2

Ví dụ này, chúng ta gọi hàm để loại bỏ kí tự space.

proximity alert evacuation requiem for a tower 3

Hàm rstrip() loại bỏ tất cả kí tự ở đuôi string

proximity alert evacuation requiem for a tower 4

Hàm lstrip() loại bỏ tất cả kí tự space ở đầu string

proximity alert evacuation requiem for a tower 5

Hàm strip() loại bỏ tất cả kí tự space ở đầu và đuôi string

proximity alert evacuation requiem for a tower 6

Hàm format() được sử dụng để build string theo 1 format riêng. {0} là kí tự điều khiển tham chiếu tới tham số đầu tiên hàm format(), {1} tham chiều tới tham số thứ 2.

Kết quả:

proximity alert evacuation requiem for a tower 7

Đây là kết quả script stripping.py

Kí tự đặc biệt

Chúng ta có thể sử dụng kí tự đặc biệt như: xuống dòng, tab,… trong string python cho từng mục đích riêng.

Ví dụ 8: kí tự đặc biệt trong string

proximity alert evacuation requiem for a tower 8

Kí tự xuống dòng \n được dùng trong ví dụ này

proximity alert evacuation requiem for a tower 9

Tiếp theo, chúng ta tìm hiểu kí tự backspace Ví dụ 9: kí tự backspace

text = u'\u041b\u0435\u0432 \u041d\u0438\u043a\u043e\u043b\u0430\ \u0435\u0432\u0438\u0447 \u0422\u043e\u043b\u0441\u0442\u043e\u0439: \n\ \u0410\u043d\u043d\u0430 \u041a\u0430\u0440\u0435\u043d\u0438\u043d\u0430' print(text) 0

String trong ví dụ này có 3 kí tự \b. Kí tự backspace lùi và xóa kí tự trước nó. Kết quả chúng ta được string “Pytooo”

text = u'\u041b\u0435\u0432 \u041d\u0438\u043a\u043e\u043b\u0430\ \u0435\u0432\u0438\u0447 \u0422\u043e\u043b\u0441\u0442\u043e\u0439: \n\ \u0410\u043d\u043d\u0430 \u041a\u0430\u0440\u0435\u043d\u0438\u043d\u0430' print(text) 1

Kí tự tab \t thêm 8 space vào string

Nếu chúng ta thêm kí tự r vào đầu string, chúng ta nhận được raw string, trong đó các kí tự điều khiển không được thông dịch.

text = u'\u041b\u0435\u0432 \u041d\u0438\u043a\u043e\u043b\u0430\ \u0435\u0432\u0438\u0447 \u0422\u043e\u043b\u0441\u0442\u043e\u0439: \n\ \u0410\u043d\u043d\u0430 \u041a\u0430\u0440\u0435\u043d\u0438\u043d\u0430' print(text) 2

Kết quả chúng ta thu được string có kí tự xuống dòng \n

text = u'\u041b\u0435\u0432 \u041d\u0438\u043a\u043e\u043b\u0430\ \u0435\u0432\u0438\u0447 \u0422\u043e\u043b\u0441\u0442\u043e\u0439: \n\ \u0410\u043d\u043d\u0430 \u041a\u0430\u0440\u0435\u043d\u0438\u043d\u0430' print(text) 3

So sánh string

Để so sánh 2 string, chúng ta dùng toán tử bằng == hoặc toán tử khác != . Toán tử trả về True hoặc False Ví dụ 10: so sánh 2 string

text = u'\u041b\u0435\u0432 \u041d\u0438\u043a\u043e\u043b\u0430\ \u0435\u0432\u0438\u0447 \u0422\u043e\u043b\u0441\u0442\u043e\u0439: \n\ \u0410\u043d\u043d\u0430 \u041a\u0430\u0440\u0435\u043d\u0438\u043d\u0430' print(text) 4

Trong ví dụ này, chúng ta so sánh 1 vài string.

text = u'\u041b\u0435\u0432 \u041d\u0438\u043a\u043e\u043b\u0430\ \u0435\u0432\u0438\u0447 \u0422\u043e\u043b\u0441\u0442\u043e\u0439: \n\ \u0410\u043d\u043d\u0430 \u041a\u0430\u0440\u0435\u043d\u0438\u043d\u0430' print(text) 5

2 string này giống nhau, trả về True

text = u'\u041b\u0435\u0432 \u041d\u0438\u043a\u043e\u043b\u0430\ \u0435\u0432\u0438\u0447 \u0422\u043e\u043b\u0441\u0442\u043e\u0439: \n\ \u0410\u043d\u043d\u0430 \u041a\u0430\u0440\u0435\u043d\u0438\u043d\u0430' print(text) 6

2 string này khác nhau, trả về False

text = u'\u041b\u0435\u0432 \u041d\u0438\u043a\u043e\u043b\u0430\ \u0435\u0432\u0438\u0447 \u0422\u043e\u043b\u0441\u0442\u043e\u0439: \n\ \u0410\u043d\u043d\u0430 \u041a\u0430\u0440\u0435\u043d\u0438\u043d\u0430' print(text) 7

2 string khác nhau, trả về False

text = u'\u041b\u0435\u0432 \u041d\u0438\u043a\u043e\u043b\u0430\ \u0435\u0432\u0438\u0447 \u0422\u043e\u043b\u0441\u0442\u043e\u0439: \n\ \u0410\u043d\u043d\u0430 \u041a\u0430\u0440\u0435\u043d\u0438\u043d\u0430' print(text) 8

2 string khác nhau, toán tử khác trả về True

text = u'\u041b\u0435\u0432 \u041d\u0438\u043a\u043e\u043b\u0430\ \u0435\u0432\u0438\u0447 \u0422\u043e\u043b\u0441\u0442\u043e\u0439: \n\ \u0410\u043d\u043d\u0430 \u041a\u0430\u0440\u0435\u043d\u0438\u043d\u0430' print(text) 9

2 string giống nhau, toán tử khác trả về False

Kết quả:

C:\Programs\Python\Python37>python.exe test.py Лев Николаевич Толстой: Анна Каренина 0

Truy xuất phần tử string

string_elements.py

C:\Programs\Python\Python37>python.exe test.py Лев Николаевич Толстой: Анна Каренина 1

Để lấy phần tử trong string python, chúng ta sử dụng index

C:\Programs\Python\Python37>python.exe test.py Лев Николаевич Толстой: Анна Каренина 2

Dòng đầu in ra kí tự đầu tiên. Lệnh print thứ 2 in ra kí tự thứ 5.

C:\Programs\Python\Python37>python.exe test.py Лев Николаевич Толстой: Анна Каренина 3

Khi index < 0, chúng ta lấy các phần tử từ cuối string. Trong ví dụ này, s[-1] trả về kí tự ‘e’, s[-2] trả về kí tự ‘l’

C:\Programs\Python\Python37>python.exe test.py Лев Николаевич Толстой: Анна Каренина 4

In ra các kí tự 5 kí tự index từ 0->4

C:\Programs\Python\Python37>python.exe test.py Лев Николаевич Толстой: Анна Каренина 5

In ra tất cả các kí tự trong string Kết quả:

C:\Programs\Python\Python37>python.exe test.py Лев Николаевич Толстой: Анна Каренина 6

Chúng ta có thể dùng vòng lặp for để duyệt qua các phần tử trong string traverse.py

C:\Programs\Python\Python37>python.exe test.py Лев Николаевич Толстой: Анна Каренина 7

In tất cả các kí tự string s

C:\Programs\Python\Python37>python.exe test.py Лев Николаевич Толстой: Анна Каренина 8

Tìm substring

– Hàm find(), rfind(), index() và rindex() được sử dụng để tìm substring trong 1 string. – Các hàm này trả về index xuất hiện đầu tiên của substring trong string. – Hàm find() và index() tìm kiếm từ điểm bắt đầu của string. Hàm rfind() và rindex() tìm kiếm bắt đầu từ cuối string.

Sự khác nhau giữa hàm find() và index() là khi không tìm thấy substring, hàm trả về -1, raise exception ValueError.

C:\Programs\Python\Python37>python.exe test.py Лев Николаевич Толстой: Анна Каренина 9

– str: search substring – beg: begin index (giá trị default là 0) – end: end index (giá trị default là chiều dài của string)

Ví dụ: substrings.py tìm substring

text = 'Лев Николаевич Толстой: Анна Каренина' print(text) 0

Giải thích:

text = 'Лев Николаевич Толстой: Анна Каренина' print(text) 1

– a.find(“crypto”) tìm substring “crypto” trong string a, trả về 4 – vị trí đầu tiên xuất hiện string “crypto” – a.find(“crypto”, 10, 20) tìm substring “crypto” trong string a từ vị trí 10 -> 20, không tìm thấy và trả về -1 – a.find(“crypto”, 15) tìm substring “crypto” trong string từ vị trí 15 đến cuối string a, trả về 23 – vị trí xuất hiện string “crypto” – a.rfind(“crypto”) tìm substring “crypto” từ cuối đến đầu string a, trả về 23 – vị trí xuất hiện substring “crypto”

Kết quả:

text = 'Лев Николаевич Толстой: Анна Каренина' print(text) 2

Thao tác string cơ bản

Chúng ta cùng tìm hiểu nối string trong ví dụ dưới đây

text = 'Лев Николаевич Толстой: Анна Каренина' print(text) 3

Giải thích:

text = 'Лев Николаевич Толстой: Анна Каренина' print(text) 4

Toán tử * lặp lại việc in string “Vncoding ” 5 lần

text = 'Лев Николаевич Толстой: Анна Каренина' print(text) 5

In ra 2 string liên tiếp.

text = 'Лев Николаевич Толстой: Анна Каренина' print(text) 6

Toán tử + nối các string.

Kết quả:

text = 'Лев Николаевич Толстой: Анна Каренина' print(text) 7

Ví dụ: Sử dụng len() để tính toán chiều dài string

text = 'Лев Николаевич Толстой: Анна Каренина' print(text) 8

Kết quả:

text = 'Лев Николаевич Толстой: Анна Каренина' print(text) 9

Ví dụ: Convert number sang string và ngược lại

C:\Programs\Python\Python37>python.exe test.py Лев Николаевич Толстой: Анна Каренина 0

Kết quả:

C:\Programs\Python\Python37>python.exe test.py Лев Николаевич Толстой: Анна Каренина 1

Thay thế string

Function replace dùng để thay thế substring trong string bằng substring khác.

C:\Programs\Python\Python37>python.exe test.py Лев Николаевич Толстой: Анна Каренина 2

– old: substring cần thay thế – new: substring thay thế – max: số lượng vị trí cần thay thế ( default là thay thế tất cả các vị trị xuất hiện substring old )

Ví dụ:

C:\Programs\Python\Python37>python.exe test.py Лев Николаевич Толстой: Анна Каренина 3

Giải thích:

C:\Programs\Python\Python37>python.exe test.py Лев Николаевич Толстой: Анна Каренина 4

Thay thế substring “holder” bằng “trader” tại vị trí xuất hiện đầu tiên. b là string đã thay thế “holder” bằng “trader”.

C:\Programs\Python\Python37>python.exe test.py Лев Николаевич Толстой: Анна Каренина 5

Thay thế substring “holder” bằng “trader” tại tất cả các vị trí xuất hiện. c là string đã thay thế “holder” bằng “trader”.

Kết quả:

C:\Programs\Python\Python37>python.exe test.py Лев Николаевич Толстой: Анна Каренина 6

Tách, nối string

Sử dụng hàm split hoặc rsplit để phân tách string. split(sep, max) rsplit(sep, max) – sep: separator – max: số lượng phân tách string – Function này trả về list string phân tách.

Xét ví dụ sau

C:\Programs\Python\Python37>python.exe test.py Лев Николаевич Толстой: Анна Каренина 7

Giải thích:

C:\Programs\Python\Python37>python.exe test.py Лев Николаевич Толстой: Анна Каренина 8

– Phân tách tất cả substring bởi kí tự ‘,’ – List k chứa list separate string

C:\Programs\Python\Python37>python.exe test.py Лев Николаевич Толстой: Анна Каренина 9

– Phân tách 5 substring bởi kí tự ‘,’ – List l chứa list separate string

print("There are many stars.") print("He said, \"Which one is your favourite?\"") print('There are many stars.') print('He said, "Which one is your favourite?"') 0

– Phân tách 3 substring từ cuối. – List m chứa list separate string

Kết quả:

print("There are many stars.") print("He said, \"Which one is your favourite?\"") print('There are many stars.') print('He said, "Which one is your favourite?"') 1

Sử dụng hàm join để nối string. Xét ví dụ sau

print("There are many stars.") print("He said, \"Which one is your favourite?\"") print('There are many stars.') print('He said, "Which one is your favourite?"') 2

Giải thích:

print("There are many stars.") print("He said, \"Which one is your favourite?\"") print('There are many stars.') print('He said, "Which one is your favourite?"') 3

Tách chuỗi bởi kí tự “,” và lưu vào list n

print("There are many stars.") print("He said, \"Which one is your favourite?\"") print('There are many stars.') print('He said, "Which one is your favourite?"') 4

Nối chuỗi được lưu trong list n và cách nhau bởi dấu :

Kết quả:

print("There are many stars.") print("He said, \"Which one is your favourite?\"") print('There are many stars.') print('He said, "Which one is your favourite?"') 5

Ngoài ra, còn sử dụng hàm partition(sep) (sep: separator) để phân tách string. Function này sẽ phân tách string tại vị trí xuất hiện đầu tiên của separator, và trả về tutple 3 phần tử, substring trước separator, substring sau separtor và separator. Ví dụ: phân tách string sử dụng partition

print("There are many stars.") print("He said, \"Which one is your favourite?\"") print('There are many stars.') print('He said, "Which one is your favourite?"') 6

Kết quả:

print("There are many stars.") print("He said, \"Which one is your favourite?\"") print('There are many stars.') print('He said, "Which one is your favourite?"') 7

String in hoa, in thường

Python cung cấp 4 function xử lí chữ in hoa, in thường. Các function này trả về string đã được modify. Ví dụ: convert chữ in hoa, in thường

print("There are many stars.") print("He said, \"Which one is your favourite?\"") print('There are many stars.') print('He said, "Which one is your favourite?"') 8

Giải thích:

print("There are many stars.") print("He said, \"Which one is your favourite?\"") print('There are many stars.') print('He said, "Which one is your favourite?"') 9

Convert tất cả các kí tự trong string thành chữ in hoa

There are many stars. He said, "Which one is your favourite?" There are many stars. He said, "Which one is your favourite?" 0

Convert tất cả các kí tự trong string thành chữ in thường

There are many stars. He said, "Which one is your favourite?" There are many stars. He said, "Which one is your favourite?" 1

Các kí tự thường được convert thành kí tự in hoa, các kí tự in hoa được convert thành kí tự thường.

There are many stars. He said, "Which one is your favourite?" There are many stars. He said, "Which one is your favourite?" 2

Kí tự đầu được convert thành in hoa, các kí tự còn lại là in thường.

Kết quả:

There are many stars. He said, "Which one is your favourite?" There are many stars. He said, "Which one is your favourite?" 3

Các function xử lí string khác

Ngoài các built-in function ở trên, Python còn cung cấp các built-in function khác rất hữu ích cho việc xử lí string Ví dụ: đếm kí tự alphabet và chữ số trong string

There are many stars. He said, "Which one is your favourite?" There are many stars. He said, "Which one is your favourite?" 4

Trong ví dụ này, sử dụng built-in function sau: – len(): trả về độ dài string – isalpha(): kiểm tra kí tự có phải alphabet hay không – isdigit(): kiểm tra kí tự có phải chữ số hay không – isspace(): kiểm tra kí tự có phải space hay không

Kết quả:

There are many stars. He said, "Which one is your favourite?" There are many stars. He said, "Which one is your favourite?" 5

Ví dụ: Nối string

There are many stars. He said, "Which one is your favourite?" There are many stars. He said, "Which one is your favourite?" 6

Kết quả:

There are many stars. He said, "Which one is your favourite?" There are many stars. He said, "Which one is your favourite?" 7

Tiếp theo, chúng ta tìm hiểu cách định dạng string in ra màn hình console.

Format string

Chúng ta có thể string động in ra màn hình console. String động được format bởi toán tử % hoặc phương thức format() Ví dụ: Format string đơn giản

There are many stars. He said, "Which one is your favourite?" There are many stars. He said, "Which one is your favourite?" 8

There are many stars. He said, "Which one is your favourite?" There are many stars. He said, "Which one is your favourite?" 9

Sử dụng %d là format specifier. Sau string, sử dụng toán tử % và đối số 32

s1 = "Eagle" s2 = "Eagle\n" s3 = "Eagle " print(len(s1)) print(len(s2)) print(len(s3)) 0

Một cách khác để format string, sử dụng format specifier {0}, sau string sử dụng phương thức kèm đối số format(32).

Kết quả:

s1 = "Eagle" s2 = "Eagle\n" s3 = "Eagle " print(len(s1)) print(len(s2)) print(len(s3)) 1

Ví dụ: Format string đơn giản

s1 = "Eagle" s2 = "Eagle\n" s3 = "Eagle " print(len(s1)) print(len(s2)) print(len(s3)) 2

Kết quả:

s1 = "Eagle" s2 = "Eagle\n" s3 = "Eagle " print(len(s1)) print(len(s2)) print(len(s3)) 3

Ví dụ: Format string với float và string

s1 = "Eagle" s2 = "Eagle\n" s3 = "Eagle " print(len(s1)) print(len(s2)) print(len(s3)) 4

s1 = "Eagle" s2 = "Eagle\n" s3 = "Eagle " print(len(s1)) print(len(s2)) print(len(s3)) 5

Sử dụng format specifier %f cho float, %s cho string.

s1 = "Eagle" s2 = "Eagle\n" s3 = "Eagle " print(len(s1)) print(len(s2)) print(len(s3)) 6

Add thêm kí tự f và s để format float và string.

Kết quả:

s1 = "Eagle" s2 = "Eagle\n" s3 = "Eagle " print(len(s1)) print(len(s2)) print(len(s3)) 7

Để control số lượng chữ số thập phân in ra, chúng ta xem ví dụ sau Ví dụ: Control số lượng chữ số thập phân in ra

s1 = "Eagle" s2 = "Eagle\n" s3 = "Eagle " print(len(s1)) print(len(s2)) print(len(s3)) 8

2f nghĩa là cho phép in ra 2 chữ số sau dấu thập phân, 3f nghĩa là cho phép in ra 3 chữ số sau chữ số thập phân.

Kết quả:

s1 = "Eagle" s2 = "Eagle\n" s3 = "Eagle " print(len(s1)) print(len(s2)) print(len(s3)) 9

Ví dụ: Các kiểu format string khác

s1 = "Eagle" s2 = "Eagle\n" s3 = "Eagle " 0

%x là format specifier cho số hexa (hệ 16), kí tự x sẽ add thêm 0x vào định dạng string in ra. %o là format specifier cho số octo (hệ 8). %e là format specifier cho số mũ.

Kết quả:

s1 = "Eagle" s2 = "Eagle\n" s3 = "Eagle " 1

Ngoài ra, có thể sử dụng phương thức format() để in ra số hexa, octo, binary Ví dụ: sử dụng format() in ra định dạng hexa, octo, binary

s1 = "Eagle" s2 = "Eagle\n" s3 = "Eagle " 2

Kết quả:

s1 = "Eagle" s2 = "Eagle\n" s3 = "Eagle " 3

Ví dụ: in ra màn hình console 3 cột chữ số

s1 = "Eagle" s2 = "Eagle\n" s3 = "Eagle " 4

Kết quả:

s1 = "Eagle" s2 = "Eagle\n" s3 = "Eagle " 5

Kết quả in ra màn hình console không được căn lề. Để căn lề, chúng ta sử dụng độ rộng của object (int, float, string,…), nếu object nhỏ hơn độ rộng, kết quả in ra sẽ được thêm space. Xét ví dụ sau đây

Chủ đề