Lệnh dấu cách trong python

Bất kỳ ký tự nào nằm trong cặp dấu nháy đơn hoặc nháy kép điều là một String (một chuỗi ký tự). Có nhiều phương thức xử lý chuỗi khác nhau. Để kiểm tra độ dài của một chuỗi, ta sử dụng phương thức len().

Nội dung chính

  • Tạo chuỗi
  • Nối chuỗi
  • Escape Sequence
  • Định dạng
  • f-Strings (Python 3.6+)
  • Ký tự trong chuỗi
  • Cắt chuỗi
  • Bỏ qua các ký tự
  • Đảo ngược một chuỗi
  • Các phương thức khác
  • Video liên quan

letter = 'P' # Chuỗi có thể là một ký tự đơn lẻ hoặc một loạt các ký tự print(letter) # P print(len(letter)) # 1 greeting = 'Hello, World!' # String could be a single or double quote,"Hello, World!" print(greeting) # Hello, World! print(len(greeting)) # 13 sentence = "I hope you are enjoying days of Python Challenge" print(sentence)

Tạo chuỗi

Để tạo một chuỗi gồm nhiều dòng ta sử dung 3 dấu nháy đơn hoặc 3 dấu nháy kép. Hãy xem ví dụ sau:

# cách 1 multiline_string = '''I am a teacher and enjoy teaching. I didn't find anything as rewarding as empowering people. That is why I created days of python.''' print(multiline_string) # cách 2 multiline_string = """I am a teacher and enjoy teaching. I didn't find anything as rewarding as empowering people. That is why I created days of python.""" print(multiline_string)

Nối chuỗi

Chúng ta có thể nối các chuỗi lại với nhau. Xem ví dụ bên dưới:

first_name = 'Leonel' last_name = 'Messi' space = ' ' full_name = first_name + space + last_name print(full_name) # Leonel Messi # Kiểm tra độ dài của chuỗi print(len(first_name)) # 6 print(len(last_name)) # 5 print(len(first_name) > len(last_name)) # True print(len(full_name)) # 12

Escape Sequence

Trong python hoặc các ngôn ngữ lập trình khác, theo sau dấu \ là một ký tự.

  • \n Xuống dòng
  • \t Tab
  • \\ Dấu gạch chéo ngược \
  • \' Dấu nháy đơn `
  • \" Dấu ngoặc kép `

print('I hope everyone is enjoying the Python Challenge.\nAre you ?') print('Days\tTopics\tExercises') print('Day 1\t3\t5') print('Day 2\t3\t5') print('Day 3\t3\t5') print('Day 4\t3\t5') print('This is a backslash symbol (\\)') print('In every programming language it starts with \"Hello, World!\"') # output I hope every one is enjoying the Python Challenge. Are you ? Days Topics Exercises Day 1 5 5 Day 2 6 20 Day 3 5 23 Day 4 1 35 This is a backslash symbol (\) In every programming language it starts with "Hello, World!"

Định dạng

% Operator

Trong python có rất nhiều cách tạo chuỗi. Trong phần này, ta sẽ đề cập đến một số trong số chúng. Toán tử % được sử dụng để định dạng một tập hợp các biến nằm trong một tuple (danh sách có kích thước cố định), cùng với một chuỗi định dạng, chứa văn bản bình thường cùng với "mã chỉ định đối số", các ký hiệu đặc biệt như "%s" , "%d", "%f", "%.f".

  • %s - Chuỗi (hoặc bất kỳ đối tượng nào có biểu diễn chuỗi, như số)
  • %d - Số nguyên
  • %f - Số dấu phẩy động
  • %.f - Số dấu phẩy động với độ chính xác cố định

# Strings first_name = 'Leonel' last_name = 'Messi' language = 'Python' formated_string = 'I am %s %s. I teach %s' %(first_name, last_name, language) print(formated_string) # I am Leonel Messi. I teach Python # Strings và Numbers radius = 10 pi = 3.14 area = pi * radius ** 2 formated_string = 'The area of circle with a radius %d is %.2f.' %(radius, area) print(formated_string) #The area of circle with a radius 10 is 314.00. python_libraries = ['Django', 'Flask', 'Numpy', 'Pandas'] formated_string = 'The following are python libraries:%s' % (python_libraries) print(formated_string) # "The following are python libraries:['Django', 'Flask', 'Numpy', 'Pandas']"

str.format

Định dạng này được giới thiệu trong phiên bản python 3.

first_name = 'Leonel' last_name = 'Messi' language = 'Python' formated_string = 'I am {} {}. I teach {}'.format(first_name, last_name, language) print(formated_string) # I am Leonel Messi. I teach Python a = 4 b = 3 print('{} + {} = {}'.format(a, b, a + b)) print('{} - {} = {}'.format(a, b, a - b)) print('{} * {} = {}'.format(a, b, a * b)) print('{} / {} = {:.2f}'.format(a, b, a / b)) # limits it to two digits after decimal print('{} % {} = {}'.format(a, b, a % b)) print('{} // {} = {}'.format(a, b, a // b)) print('{} ** {} = {}'.format(a, b, a ** b)) # output 4 + 3 = 7 4 - 3 = 1 4 * 3 = 12 4 / 3 = 1.33 4 % 3 = 1 4 // 3 = 1 4 ** 3 = 64 # Strings and numbers radius = 10 pi = 3.14 area = pi * radius ** 2 formated_string = 'The area of a cricle with a radius {} is {:.2f}.'.format(radius, area) print(formated_string) #The area of a cricle with a radius 10 is 314.00.

f-Strings (Python 3.6+)

Một dạng chuỗi mới khác là nội suy chuỗi, f-string. Các chuỗi bắt đầu bằng f và chúng ta có thể đưa dữ liệu vào các vị trí tương ứng của chúng.

a = 4 b = 3 print(f'{a} + {b} = {a +b}') # 4 + 3 = 7 print(f'{a} - {b} = {a - b}') # 4 - 3 = 1 print(f'{a} * {b} = {a * b}') # 4 * 3 = 12 print(f'{a} / {b} = {a / b:.2f}')# 4 / 3 = 1.33 print(f'{a} % {b} = {a % b}') # 4 % 3 = 1 print(f'{a} // {b} = {a // b}') # 4 // 3 = 1 print(f'{a} ** {b} = {a ** b}') # 4 ** 3 = 64

Ký tự trong chuỗi

  • Tách ký tự: Cách đơn giản nhất để trích xuất các ký tự đơn lẻ từ chuỗi và gán chúng thành các biến tương ứng.

language = 'Python' a,b,c,d,e,f = language print(a) # P print(b) # y print(c) # t print(d) # h print(e) # o print(f) # n

  • Truy cập các ký tự trong một chuỗi: Trong lập trình đếm bắt đầu từ số không. Do đó, ký tự đầu tiên của chuỗi là chỉ số 0 và ký tự cuối cùng của chuỗi là chiều dài của chuỗi trừ đi một.

Lệnh dấu cách trong python

Chỉ số trong chuỗi, python cơ bản, các xử lý chuỗi trong python

language = 'Python' first_letter = language[0] print(first_letter) # P second_letter = language[1] print(second_letter) # y last_index = len(language) - 1 last_letter = language[last_index] print(last_letter) # n

Nếu chúng ta muốn lấy các ký tự bắt đầu từ bên phải thì chúng ta có thể sử dụng cách sau:

language = 'Python' last_letter = language[-1] print(last_letter) # n second_last = language[-2] print(second_last) # o

Cắt chuỗi

Trong python, chúng ta có thể cắt một chuỗi mẹ thành nhiều chuỗi con.

language = 'Python' first_three = language[0:3] # Bắt đầu từ chỉ mục 0 và lên đến 3 nhưng không bao gồm 3 last_three = language[3:6] print(last_three) # hon # Cách khác last_three = language[-3:] print(last_three) # hon last_three = language[3:] print(last_three) # hon

Bỏ qua các ký tự

Có thể bỏ qua các ký tự trong khi cắt bằng cách chuyển đối số bước cho phương thức cắt.

language = 'Python' pto = language[0,6:2] print(pto) # Pto

Đảo ngược một chuỗi

Chúng ta có thể dễ dàng đảo ngược các ký tự trong chuỗi trong python bằng cách sau:

greeting = 'Hello, World!' print(greeting[::-1]) # !dlroW ,olleH

Các phương thức khác

Trong ngôn ngữ lập trình Python, có nhiều phương thức xử lý chuỗi cho phép chúng ta định dạng chuỗi (ta có thể sử dụng dir() để xem các phương thức). Hãy xem một số phương thức xử lý chuỗi trong các ví dụ sau:

  • capitalize(): Chuyển ký tự đầu tiên của chuỗi thành ký tự viết hoa

challenge = 'thirty days of python' print(challenge.capitalize()) # 'Thirty days of python'

  • count(): trả về số lần xuất hiện của chuỗi con trong chuỗi mẹ, count(substring, start=.., end=..)

challenge = 'thirty days of python' print(challenge.count('y')) # 3 print(challenge.count('y', 7, 14)) # 1 print(challenge.count('th')) # 2

  • endwith(): Kiểm tra xem một chuỗi mẹ có kết thúc bằng một chuỗi con được chỉ định hay không

challenge = 'thirty days of python' print(challenge.endswith('on')) # True print(challenge.endswith('tion')) # False

  • expandtabs(): Thay thế ký tự tab bằng dấu cách (kích thước tab mặc định là 8). Nó nhận đối số là kích thước của tab

challenge = 'thirty\tdays\tof\tpython' print(challenge.expandtabs()) # thirty days of python print(challenge.expandtabs(10)) # thirty days of python

  • find(): Trả về chỉ số gần nhất của lần xuất hiện đầu tiên của một chuỗi con, nếu không tìm thấy thì trả về -1

challenge = 'thirty days of python' print(challenge.find('y')) # 5 print(challenge.find('th')) # 0 print(challenge.find('thong')) # -1

  • rfind(): Trả về chỉ số cao nhất của lần xuất hiện đầu tiên của một chuỗi con, nếu không tìm thấy thì trả về -1

challenge = 'thirty days of python' print(challenge.find('y')) # 5 print(challenge.find('th')) # 1 print(challenge.find('thong')) # -1

  • format(): định dạng chuỗi gọn gàng hơn bằng cách sử dụng biến trong chương trình (để tìm hiểu thêm về định dạng chuỗi, hãy xem thêm tại đây

first_name = 'Leonel' last_name = 'Messi' job = 'teacher' country = 'Argentina' sentence = 'I am {} {}. I am a {}. I live in {}.'.format(first_name, last_name, job, country) print(sentence) # I am Leonel Messi. I am a teacher. I live in Argentina. radius = 10 pi = 3.14 area = pi * radius ** 2 result = 'The area of a circle with radius {} is {}'.format(str(radius), str(area)) print(result) # The area of a circle with radius 10 is 314.0

  • index(): Trả về chỉ số thấp nhất của một chuỗi con, các đối số bổ sung cho biết chỉ số bắt đầu và kết thúc (mặc định là 0 và độ dài chuỗi - 1)

challenge = 'thirty days of python' sub_string = 'da' print(challenge.index(sub_string)) # 7 print(challenge.index(sub_string, 9)) # error

  • rindex(): Trả về chỉ số cao nhất của một chuỗi con, các đối số bổ sung cho biết chỉ số bắt đầu và kết thúc (mặc định là 0 và độ dài chuỗi - 1)

challenge = 'thirty days of python' sub_string = 'da' print(challenge.rindex(sub_string)) # 8 print(challenge.rindex(sub_string, 9)) # error

  • isalnum(): Kiểm tra ký tự chữ và ký tự số

challenge = 'ThirtyDaysPython' print(challenge.isalnum()) # True challenge = '30DaysPython' print(challenge.isalnum()) # True challenge = 'thirty days of python' print(challenge.isalnum()) # False, khoảng trắng không phải là ký tự chữ và số challenge = 'thirty days of python 2019' print(challenge.isalnum()) # False

  • isalpha(): Kiểm tra xem tất cả các phần tử chuỗi có phải là các ký tự trong bảng chữ cái (a-z và A-Z) không

challenge = 'thirty days of python' print(challenge.isalpha()) # False, khoảng trắng không thuộc nhóm ký tự az AZ challenge = 'ThirtyDaysPython' print(challenge.isalpha()) # True num = '123' print(num.isalpha()) # False

  • isdecimal(): Kiểm tra xem tất cả các ký tự trong chuỗi có phải là số thập phân (0-9) hay không

challenge = 'thirty days of python' print(challenge.isdecimal()) # False challenge = '123' print(challenge.isdecimal()) # True challenge = '\u00B2' print(challenge.isdigit()) # False challenge = '12 3' print(challenge.isdecimal()) # False, không được phép khoản trắng

  • isdigit(): Kiểm tra xem tất cả các ký tự trong một chuỗi có phải là số không (0-9 và một số ký tự unicode khác cho các số)

challenge = 'Thirty' print(challenge.isdigit()) # False challenge = '30' print(challenge.isdigit()) # True challenge = '\u00B2' # ² print(challenge.isdigit()) # True

  • isnumeric(): Kiểm tra xem tất cả các ký tự trong một chuỗi có phải là số hoặc có liên quan đến số hay không (giống như isdigit(), chỉ cần chấp nhận nhiều ký hiệu hơn, như ½)

num = '10' print(num.isnumeric()) # True num = '\u00BD' # ½ print(num.isnumeric()) # True num = '10.5' print(num.isnumeric()) # False

  • isidentifier(): Kiểm tra giá trị nhận dạng (kiểm tra tên biến có hợp lệ không)

challenge = '30DaysOfPython' print(challenge.isidentifier()) # False, Bởi vì bắt đầu bằng một con số challenge = 'thirty_days_of_python' print(challenge.isidentifier()) # True

  • islower(): Kiểm tra xem tất cả các ký tự trong chuỗi có phải là chữ thường không

challenge = 'thirty days of python' print(challenge.islower()) # True challenge = 'Thirty days of python' print(challenge.islower()) # False

  • isupper(): Kiểm tra xem tất cả các ký tự trong chuỗi có phải là chữ hoa không

challenge = 'thirty days of python' print(challenge.isupper()) # False challenge = 'THIRTY DAYS OF PYTHON' print(challenge.isupper()) # True

  • join(): Nối một ký tự với một list

web_tech = ['HTML', 'CSS', 'JavaScript', 'React'] result = '# '.join(web_tech) print(result) # HTML# CSS# JavaScript# React

  • strip(): Loại (xóa) bỏ tất cả các ký tự đã cho (từ đầu đến cuối chuỗi)

challenge = 'thirty days of pythoonnn' print(challenge.strip('noth')) # irty days of py

  • replace(): Thay thế chuỗi con bằng một chuỗi đã cho (hay nói các khác là tìm kiếm và thay thế)

challenge = 'thirty days of python' print(challenge.replace('python', 'coding')) # thirty days of codings

  • split(): Tách chuỗi (tách các từ trong chuỗi thành một list)

challenge = 'thirty days of python' print(challenge.split()) # ['thirty', 'days', 'of', 'python'] challenge = 'thirty, days, of, python' print(challenge.split(', ')) # ['thirty', 'days', 'of', 'python']

  • swapcase(): Chuyển đổi tất cả các ký tự chữ hoa thành chữ thường và tất cả các ký tự chữ thường thành các ký tự chữ hoa

challenge = 'thirty days of python' print(challenge.swapcase()) # THIRTY DAYS OF PYTHON challenge = 'Thirty Days Of Python' print(challenge.swapcase()) # tHIRTY dAYS oF pYTHON

  • startwith(): Kiểm tra xem một chuỗi có bắt đầu bằng chuỗi được chỉ định hay không

challenge = 'thirty days of python' print(challenge.startswith('thirty')) # True challenge = '30 days of python' print(challenge.startswith('thirty')) # False

Bài tập

  1. Nối các chuỗi 'Thirty', 'Days', 'Of', 'Python' thành Thirty Days Of Python.
  2. Nối chuỗi 'Coding', 'For', 'All' thành một chuỗi duy nhất, Coding For All.
  3. Khai báo một biến company và gán cho nó một giá trị ban đầu là Coding For All.
  4. In ra biến khai báo ở trên company bằng cách sử dụng print().
  5. In độ dài của chuỗi company bằng phương thức len() và print().
  6. Thay đổi tất cả các ký tự thành chữ in hoa bằng cách sử dụng phương thức upper().
  7. Thay đổi tất cả các ký tự thành chữ thường bằng cách sử dụng phương thức Lower().
  8. Sử dụng các phương thức capitalize(), title(), swapcase() để định dạng giá trị của chuỗi Coding For All.
  9. Cắt (slice) từ đầu tiên của chuỗi Coding For All.
  10. Kiểm tra xem chuỗi Coding For All có chứa một từ Coding hay không bằng cách sử dụng index(), find() hoặc các phương pháp khác.
  11. Thay thế từ Coding trong chuỗi Coding For All thành Python.
  12. Thay đổi Python for Everyone thành Python for All bằng cách sử dụng replace hoặc các phương pháp khác.
  13. Tách chuỗi 'Coding For All' bằng cách sử dụng dấu cách làm dấu phân tách (split()).
  14. "Facebook, Google, Microsoft, Apple, IBM, Oracle, Amazon" tách chuỗi tại dấu phẩy.
  15. Ký tự ở chỉ số 0 trong chuỗi Coding For All là gì.
  16. Chỉ số cuối cùng của chuỗi Coding For All là gì.
  17. Ký tự nào ở vị trí thứ 10 trong chuỗi "Coding For All".
  18. Tạo một từ viết tắt hoặc một chữ viết tắt cho tên Python For Everyone.
  19. Tạo một từ viết tắt hoặc một chữ viết tắt cho tên Coding For All.
  20. Sử dụng index để xác định vị trí xuất hiện đầu tiên của C trong Coding For All.
  21. Xác định vị trí xuất hiện đầu tiên của F trong Coding For All.
  22. Sử dụng rfind để xác định vị trí của lần xuất hiện cuối cùng của ký tự l trong Coding For All People.
  23. Sử dụng index hoặc find để tìm vị trí xuất hiện đầu tiên của từ 'because' trong câu sau: 'You cannot end a sentence with because because because is a conjunction'.
  24. Sử dụng rindex để tìm vị trí xuất hiện cuối cùng của từ 'because' trong câu sau: 'You cannot end a sentence with because because because is a conjunction'.
  25. Cắt bỏ cụm từ 'because because because' trong câu sau: 'You cannot end a sentence with because because because is a conjunction'.
  26. Tìm vị trí xuất hiện đầu tiên của từ 'because' trong câu sau: 'You cannot end a sentence with because because because is a conjunction'
  27. Chuỗi 'Coding For All' có bắt đầu bằng chuỗi con 'Coding' không?
  28. Chuỗi 'Coding For All' có kết thúc bằng chuỗi con 'Coding' không?
  29. ' Coding For All ' loại bỏ các khoảng trống ở cuối bên trái và bên phải trong chuỗi đã cho.
  30. Biến nào sau đây trả về True khi chúng ta sử dụng phương thức isidentifier(): 30DaysOfPython, thirty_days_of_python
  31. Cho list gồm các thư viện trong python như sau: ['Django', 'Flask', 'Bottle', 'Pyramid', 'Falcon']. Hãy chuyển list đó thành một chuỗi và cách nhau bởi dấu cách.
  32. Sử dụng Escape Sequence để tách các câu sau:

    I am enjoying this challenge. I just wonder what is next.

  33. Sử dụng Escape Sequence để viết mẫu sau:

    Name Age Country Messi 250 Argentina

  34. Sử dụng phương pháp định dạng chuỗi để hiển thị thông tin sau:

    radius = 10 area = 3.14 * radius ** 2 The area of a cricle with radius 10 is 314 meters square.

  35. Thực hiện bằng các cách định dạng chuỗi để hiển thị:

    8 + 6 = 14 8 - 6 = 2 8 * 6 = 48 8 / 6 = 1.33 8 % 6 = 2 8 // 6 = 1 8 ** 6 = 262144