Bài 2.3. Chuỗi

Bài 2.3. Chuỗi
Vì hầu hết các chương trình đều định nghĩa và thu thập một số loại dữ liệu và sau đó làm điều gì đó hữu ích với chúng, việc phân loại các loại dữ liệu khác nhau sẽ rất hữu ích. Loại dữ liệu đầu tiên chúng ta sẽ xem xét là chuỗi. Chuỗi khá đơn giản khi nhìn thoáng qua, nhưng bạn có thể sử dụng chúng theo nhiều cách khác nhau.
Một chuỗi là một dãy các ký tự. Bất cứ thứ gì bên trong dấu ngoặc kép đều được coi là một chuỗi trong Python, và bạn có thể sử dụng dấu ngoặc đơn hoặc dấu ngoặc kép xung quanh chuỗi của mình như sau:
"This is a string."
'This is also a string.'
Sự linh hoạt này cho phép bạn sử dụng dấu ngoặc kép và dấu nháy đơn trong chuỗi của mình:
'I told my friend, "Python is my favorite language!"'
"The language 'Python' is named after Monty Python, not the snake."
"One of Python's strengths is its diverse and supportive community."
Hãy khám phá một số cách bạn có thể sử dụng chuỗi.
Thay đổi chữ hoa và chữ thường trong chuỗi bằng phương thức
Một trong những tác vụ đơn giản nhất bạn có thể làm với chuỗi là thay đổi chữ hoa và chữ thường của các từ trong chuỗi. Hãy xem mã sau và cố gắng xác định điều gì đang xảy ra:
name = "ada lovelace"
print(name.title())
Lưu tệp này dưới tên name.py
và sau đó chạy nó. Bạn sẽ thấy đầu ra sau:
Ada Lovelace
Trong ví dụ này, biến name
tham chiếu đến chuỗi chữ thường "ada lovelace"
. Phương thức title()
xuất hiện sau biến trong lệnh print()
. Một phương thức là một hành động mà Python có thể thực hiện trên một phần dữ liệu. Dấu chấm (.) sau name
trong name.title()
cho Python biết thực hiện phương thức title()
trên biến name
. Mỗi phương thức được theo sau bởi một cặp dấu ngoặc đơn, vì các phương thức thường cần thông tin bổ sung để thực hiện công việc của chúng. Thông tin đó được cung cấp bên trong dấu ngoặc đơn. Phương thức title()
không cần thông tin bổ sung nào, vì vậy dấu ngoặc đơn của nó trống.
Phương thức title()
thay đổi mỗi từ thành chữ hoa đầu tiên, nơi mỗi từ bắt đầu bằng một chữ cái viết hoa. Điều này hữu ích vì bạn sẽ thường muốn coi một tên là một phần thông tin. Ví dụ, bạn có thể muốn chương trình của mình nhận ra các giá trị đầu vào Ada
, ADA
và ada
là cùng một tên và hiển thị tất cả chúng dưới dạng Ada
.
Một số phương thức hữu ích khác cũng có sẵn để xử lý chữ hoa và chữ thường. Ví dụ, bạn có thể thay đổi một chuỗi thành tất cả chữ hoa hoặc tất cả chữ thường như sau:
name = "Ada Lovelace"
print(name.upper())
print(name.lower())
Điều này sẽ hiển thị:
ADA LOVELACE
ada lovelace
Phương thức lower()
đặc biệt hữu ích để lưu trữ dữ liệu. Bạn thường không muốn tin tưởng vào việc viết hoa mà người dùng của bạn cung cấp, vì vậy bạn sẽ chuyển đổi chuỗi thành chữ thường trước khi lưu trữ chúng. Sau đó, khi bạn muốn hiển thị thông tin, bạn sẽ sử dụng cách viết hoa phù hợp nhất cho mỗi chuỗi.
Sử dụng biến trong chuỗi
Trong một số tình huống, bạn sẽ muốn sử dụng giá trị của một biến bên trong một chuỗi. Ví dụ, bạn có thể muốn sử dụng hai biến để đại diện cho tên và họ, tương ứng, và sau đó kết hợp các giá trị đó để hiển thị tên đầy đủ của ai đó:
first_name = "ada"
last_name = "lovelace"
full_name = f"{first_name} {last_name}"
print(full_name)
Để chèn giá trị của một biến vào một chuỗi, đặt chữ cái f
ngay trước dấu ngoặc kép mở. Đặt dấu ngoặc nhọn xung quanh tên của bất kỳ biến nào bạn muốn sử dụng bên trong chuỗi. Python sẽ thay thế mỗi biến bằng giá trị của nó khi chuỗi được hiển thị.
Những chuỗi này được gọi là chuỗi f. Chữ f
là viết tắt của format
, vì Python định dạng chuỗi bằng cách thay thế tên của bất kỳ biến nào trong dấu ngoặc nhọn bằng giá trị của nó. Đầu ra từ mã trước là:
ada lovelace
Bạn có thể làm nhiều điều với chuỗi f. Ví dụ, bạn có thể sử dụng chuỗi f để tạo ra các thông báo hoàn chỉnh bằng cách sử dụng thông tin liên quan đến một biến, như được hiển thị ở đây:
first_name = "ada"
last_name = "lovelace"
full_name = f"{first_name} {last_name}"
print(f"Hello, {full_name.title()}!")
Tên đầy đủ được sử dụng trong một câu chào người dùng, và phương thức title()
thay đổi tên thành chữ hoa đầu tiên. Mã này trả về một lời chào đơn giản nhưng được định dạng đẹp:
Hello, Ada Lovelace!
Bạn cũng có thể sử dụng chuỗi f để tạo ra một thông báo và sau đó gán toàn bộ thông báo cho một biến:
first_name = "ada"
last_name = "lovelace"
full_name = f"{first_name} {last_name}"
message = f"Hello, {full_name.title()}!"
print(message)
Mã này hiển thị thông báo Hello, Ada Lovelace!
cũng như trước, nhưng bằng cách gán thông báo cho một biến, chúng ta làm cho lệnh print()
cuối cùng đơn giản hơn.
Thêm khoảng trắng vào chuỗi bằng tab hoặc dòng mới
Trong lập trình, khoảng trắng đề cập đến bất kỳ ký tự không in nào, chẳng hạn như khoảng trắng, tab và ký tự kết thúc dòng. Bạn có thể sử dụng khoảng trắng để tổ chức đầu ra của mình để dễ đọc hơn cho người dùng.
Để thêm một tab vào văn bản của bạn, sử dụng ký tự kết hợp \t
:
print("Python")
print("\tPython")
Để thêm một dòng mới trong một chuỗi, sử dụng ký tự kết hợp \n
:
print("Languages:\nPython\nC\nJavaScript")
Bạn cũng có thể kết hợp tab và dòng mới trong một chuỗi. Chuỗi "\n\t"
cho Python biết chuyển sang dòng mới và bắt đầu dòng tiếp theo bằng một tab. Ví dụ sau đây cho thấy cách bạn có thể sử dụng một chuỗi một dòng để tạo ra bốn dòng đầu ra:
print("Languages:\n\tPython\n\tC\n\tJavaScript")
Dòng mới và tab sẽ rất hữu ích trong hai chương tiếp theo, khi bạn bắt đầu tạo ra nhiều dòng đầu ra từ chỉ một vài dòng mã.
Loại bỏ khoảng trắng
Khoảng trắng thừa có thể gây nhầm lẫn trong các chương trình của bạn. Đối với lập trình viên, 'python'
và 'python '
trông khá giống nhau. Nhưng đối với một chương trình, chúng là hai chuỗi khác nhau. Python phát hiện khoảng trắng thừa trong 'python '
và coi nó là quan trọng trừ khi bạn nói khác.
Điều quan trọng là phải nghĩ về khoảng trắng, vì thường bạn sẽ muốn so sánh hai chuỗi để xác định xem chúng có giống nhau không. Ví dụ, một trường hợp quan trọng có thể liên quan đến việc kiểm tra tên người dùng khi họ đăng nhập vào một trang web. Khoảng trắng thừa cũng có thể gây nhầm lẫn trong các tình huống đơn giản hơn nhiều. May mắn thay, Python làm cho việc loại bỏ khoảng trắng thừa từ dữ liệu mà mọi người nhập vào trở nên dễ dàng.
Python có thể tìm kiếm khoảng trắng thừa ở bên phải và bên trái của một chuỗi. Để đảm bảo rằng không có khoảng trắng nào tồn tại ở bên phải của một chuỗi, sử dụng phương thức rstrip()
:
favorite_language = 'python '
print(favorite_language)
print(favorite_language.rstrip())
print(favorite_language)
Giá trị liên kết với favorite_language
chứa khoảng trắng thừa ở cuối chuỗi. Khi bạn yêu cầu Python giá trị này trong một phiên terminal, bạn có thể thấy khoảng trắng ở cuối giá trị. Khi phương thức rstrip()
hoạt động trên biến favorite_language
, khoảng trắng thừa này được loại bỏ. Tuy nhiên, nó chỉ được loại bỏ tạm thời. Nếu bạn yêu cầu giá trị của favorite_language
một lần nữa, chuỗi trông giống như khi nó được nhập, bao gồm cả khoảng trắng thừa.
Để loại bỏ khoảng trắng khỏi chuỗi vĩnh viễn, bạn phải liên kết giá trị đã loại bỏ khoảng trắng với tên biến:
favorite_language = 'python '
favorite_language = favorite_language.rstrip()
print(favorite_language)
Để loại bỏ khoảng trắng khỏi chuỗi, bạn loại bỏ khoảng trắng từ bên phải của chuỗi và sau đó liên kết giá trị mới này với biến gốc. Thay đổi giá trị của một biến thường được thực hiện trong lập trình. Đây là cách giá trị của một biến có thể được cập nhật khi một chương trình được thực thi hoặc để đáp ứng đầu vào của người dùng.
Bạn cũng có thể loại bỏ khoảng trắng từ bên trái của một chuỗi bằng cách sử dụng phương thức lstrip()
, hoặc từ cả hai bên cùng một lúc bằng cách sử dụng phương thức strip()
:
favorite_language = ' python '
print(favorite_language.rstrip())
print(favorite_language.lstrip())
print(favorite_language.strip())
Trong ví dụ này, chúng ta bắt đầu với một giá trị có khoảng trắng ở đầu và cuối. Sau đó, chúng ta loại bỏ khoảng trắng thừa từ bên phải, từ bên trái và từ cả hai bên. Thử nghiệm với các phương thức loại bỏ này có thể giúp bạn làm quen với việc thao tác chuỗi. Trong thế giới thực, các phương thức loại bỏ này thường được sử dụng để làm sạch đầu vào của người dùng trước khi nó được lưu trữ trong một chương trình.
Loại bỏ tiền tố
Khi làm việc với chuỗi, một tác vụ phổ biến khác là loại bỏ một tiền tố. Hãy xem xét một URL với tiền tố phổ biến https://
. Chúng ta muốn loại bỏ tiền tố này, để có thể tập trung vào phần URL mà người dùng cần nhập vào thanh địa chỉ. Đây là cách thực hiện:
nostarch_url = 'https://nostarch.com'
print(nostarch_url.removeprefix('https://'))
Nhập tên của biến theo sau là một dấu chấm, và sau đó là phương thức removeprefix()
. Bên trong dấu ngoặc đơn, nhập tiền tố bạn muốn loại bỏ khỏi chuỗi gốc.
Giống như các phương thức loại bỏ khoảng trắng, removeprefix()
để lại chuỗi gốc không thay đổi. Nếu bạn muốn giữ giá trị mới với tiền tố đã bị loại bỏ, hãy gán nó cho biến gốc hoặc gán nó cho một biến mới:
simple_url = nostarch_url.removeprefix('https://')
Khi bạn thấy một URL trong thanh địa chỉ và phần https://
không được hiển thị, trình duyệt có thể đang sử dụng một phương thức như removeprefix()
phía sau.
Tránh lỗi cú pháp với chuỗi
Một loại lỗi mà bạn có thể thấy thường xuyên là lỗi cú pháp. Lỗi cú pháp xảy ra khi Python không nhận ra một phần của chương trình của bạn là mã Python hợp lệ. Ví dụ, nếu bạn sử dụng dấu nháy đơn trong dấu ngoặc đơn, bạn sẽ tạo ra một lỗi. Điều này xảy ra vì Python hiểu mọi thứ giữa dấu ngoặc đơn đầu tiên và dấu nháy đơn là một chuỗi. Sau đó, nó cố gắng hiểu phần còn lại của văn bản là mã Python, điều này gây ra lỗi.
Đây là cách sử dụng dấu ngoặc đơn và dấu ngoặc kép đúng cách. Lưu chương trình này dưới tên apostrophe.py
và sau đó chạy nó:
message = "One of Python's strengths is its diverse community."
print(message)
Dấu nháy đơn xuất hiện bên trong một cặp dấu ngoặc kép, vì vậy trình thông dịch Python không gặp khó khăn khi đọc chuỗi đúng cách:
One of Python's strengths is its diverse community.
Tuy nhiên, nếu bạn sử dụng dấu ngoặc đơn, Python không thể nhận ra nơi chuỗi nên kết thúc:
message = 'One of Python's strengths is its diverse community.'
print(message)
Bạn sẽ thấy đầu ra sau:
File "apostrophe.py", line 1
message = 'One of Python's strengths is its diverse community.'
^
SyntaxError: unterminated string literal (detected at line 1)
Trong đầu ra, bạn có thể thấy rằng lỗi xảy ra ngay sau dấu ngoặc đơn cuối cùng. Lỗi cú pháp này cho thấy rằng trình thông dịch không nhận ra một phần nào đó trong mã là mã Python hợp lệ và nó nghĩ rằng vấn đề có thể là một chuỗi không được trích dẫn đúng cách. Lỗi có thể đến từ nhiều nguồn khác nhau, và tôi sẽ chỉ ra một số lỗi phổ biến khi chúng xuất hiện. Bạn có thể thấy lỗi cú pháp thường xuyên khi bạn học cách viết mã Python đúng cách. Lỗi cú pháp cũng là loại lỗi ít cụ thể nhất, vì vậy chúng có thể khó và gây khó chịu để xác định và sửa chữa.
Comments