Định dạng một chuỗi là điều bạn sẽ làm mọi lúc khi viết mã bằng Python. Đối với mọi biến, bộ và từ điển và logic mà chúng tôi xác định, cuối cùng chúng tôi phải in hoặc hiển thị nó ở một dạng nào đó.
Và mỗi trong số này, không có ngoại lệ, yêu cầu chúng tôi định dạng đầu ra được yêu cầu thành một chuỗi trước khi cuối cùng chúng tôi có thể in nó hoặc sử dụng hàm có liên quan để hiển thị chuỗi trong Python.
Bạn có thể đã sử dụng str
chức năng và làm việc với chuỗi ký tự, nhưng có nhiều lúc chúng ta cần thêm thứ gì đó. Với suy nghĩ này, hãy xem cách chúng ta có thể định dạng chuỗi bằng các kỹ thuật Python3 khác nhau.
Đây là kỹ thuật đơn giản nhất – và do đó dễ dàng nhất – để bắt đầu. Đó cũng là cách tôi muốn dạy cho những người mới bắt đầu viết mã.
Việc sử dụng các phần theo thứ tự bằng chữ và các toán tử ‘+’ giúp bạn dễ dàng nắm bắt mà không cần có bất kỳ kiến thức nào về mã hóa trước đó.
name="YoungWonks"
year = 2014
string = 'Hello, ' + name
print(string)
string = name + ' was started in ' + str(year)
print(string)
Đây là kết quả:
Hello, YoungWonks
YoungWonks was started in 2014
Ví dụ trên minh họa cách chúng ta có thể nối các biến bằng cách sử dụng toán tử cộng để tạo một chuỗi được định dạng. Điều cần lưu ý ở đây là chúng ta sẽ cần chuyển đổi tất cả các biến thành chuỗi. Ở đây, tên biến đã là một chuỗi và năm là một số nguyên.
Cách tiếp cận này thường được sử dụng trong Python2, khi ngôn ngữ này vẫn còn non trẻ và đang phát triển. Đó là một kỹ thuật dễ hiểu đối với các lập trình viên kỳ cựu có nền tảng lập trình C.
Ở đây, như bạn có thể thấy trong mã bên dưới, chúng tôi đang xác định trình giữ chỗ với loại dữ liệu được chỉ định và (các) đối số ở cuối câu lệnh. Điều này giống với ngôn ngữ C (và các ngôn ngữ khác nữa).
name="YoungWonks"
year = 2014
string = 'Hello, %s ' % name
print(string)
string = '%s was started in %d' % (name, year)
print(string)
Và đây là kết quả:
Hello, YoungWonks
YoungWonks was started in 2014
Trong ví dụ trên, chúng tôi xác định các biến mà chúng tôi muốn định dạng thành chuỗi. Sau đó, chúng tôi tạo chuỗi với các trình giữ chỗ cho các biến.
Hãy nhớ rằng các trình giữ chỗ phải khớp với các loại biến tương ứng. Chúng ta có thể liên kết các biến thực tế với các trình giữ chỗ bằng ký hiệu % ở cuối câu lệnh.
Đây là một kỹ thuật mà nhiều lập trình viên Python coi là một luồng gió mới, vì nó giúp bạn làm mọi việc dễ dàng hơn.
Nó được giới thiệu vào đầu Python3. Về cơ bản, cú pháp mới đã loại bỏ các ký hiệu ‘%’ và thay vào đó cung cấp .format()
như một phương thức chuỗi, chấp nhận các đối số vị trí cho các thay thế được mô tả trong dấu ngoặc nhọn.
Chúng tôi cũng có thể chỉ định các đối số từ khóa ở đây, mặc dù điều này đôi khi cảm thấy hơi dài dòng.
Còn nhiều điều bạn có thể làm với str.format
phương thức, chẳng hạn như chỉ định độ chính xác, làm tròn và phần đệm bằng không. Đối với mục đích của bài viết này, chúng tôi sẽ chỉ tập trung vào cách sử dụng cơ bản.
name="YoungWonks"
year = 2014
string = '{} was started in {}'.format(name, year)
print(string)
string = '{0} was started in {1}'.format(name, year)
print(string)
yw = {'name': 'YoungWonks', 'year': 2014}
string = "{name} was started in {year}.".format(name=yw['name'], year=yw['year'])
print(string)
Đây là kết quả:
YoungWonks was started in 2014
YoungWonks was started in 2014
YoungWonks was started in 2014
Trong ví dụ trên, chúng ta tạo các biến để định dạng thành chuỗi. Sau đó, ở dạng đơn giản, chúng ta có thể sử dụng {} làm trình giữ chỗ cho các biến được sử dụng. Sau đó chúng tôi áp dụng các .format()
phương thức vào chuỗi và chỉ định các biến dưới dạng một bộ tham số được sắp xếp.
Phần thứ hai của ví dụ sử dụng các chỉ số của các tham số được sắp xếp trong các trình giữ chỗ.
Phần thứ ba của ví dụ cũng cho chúng ta thấy cách sử dụng từ điển trong định dạng của chuỗi đồng thời sử dụng các tham số được đặt tên trong phương thức .format.
Cũng là viết tắt của chuỗi định dạng, chuỗi f là kỹ thuật mới nhất mà Python3 hiện hỗ trợ nên chúng đang được áp dụng nhanh chóng.
Các chuỗi F giải quyết mức độ chi tiết của .format()
kỹ thuật và cung cấp một cách ngắn gọn để làm điều tương tự bằng cách thêm chữ f làm tiền tố cho chuỗi. Phương pháp này dường như có tốt nhất trong hai kỹ thuật:
- Thứ tự nối theo nghĩa đen
- Tính mô-đun của
.format()
phương pháp
Vì những ưu điểm này, ngày càng có nhiều nhà phát triển sử dụng nó. Tôi nghĩ rằng nó cũng đơn giản hơn đối với sinh viên để học và dễ dàng chấp nhận hơn nếu bạn vẫn chưa quen với việc viết mã.
name="YoungWonks"
year = 2014
string = f'{name} was started in {year}'
print(string)
string = f'{name} was started in {2013 + 1}.'
print(string)
yw = {'name': 'YoungWonks', 'year': 2014}
string = f"{yw['name']} was started in {yw['year']}."
print(string)
YoungWonks was started in 2014
YoungWonks was started in 2014.
YoungWonks was started in 2014.
Như bạn có thể nhận thấy, ví dụ trên tương tự như ví dụ .format()
phương pháp. Ở đây, chúng tôi sử dụng {} cho trình giữ chỗ trong chuỗi nhưng cũng chỉ định các biến trực tiếp trong trình giữ chỗ.
Phương pháp này có hiệu lực khi chúng ta sử dụng chữ thường f
ở đầu chuỗi. Bạn cũng có thể sử dụng phương thức với các kiểu dữ liệu khác, chẳng hạn như từ điển.
Tất cả những điều này là kiến thức liên quan khi bạn đang học Python. Mặc dù bạn sẽ không thường xuyên sử dụng kiểu định dạng chuỗi cũ, nhưng có một số diễn đàn cũ hơn, bài đăng trên Stack Overflow và nhiều thư viện Machine Learning cũ hơn vẫn sử dụng các kiểu cũ hơn này.
Do đó, thật tốt khi biết chúng để bạn có thể nhận ra điều gì đang xảy ra và có khả năng gỡ lỗi sự cố.
Trong số ba phương pháp khác mà chúng tôi đã thảo luận ở đây, bạn có thể sử dụng bất kỳ phương pháp nào trong số chúng để định dạng chuỗi của mình trong Python. Chỉ cần chọn cái nào hoạt động tốt nhất dựa trên bối cảnh và thậm chí cả tâm trạng của bạn ngày hôm đó!
Các +
hữu ích khi bạn làm việc với các câu lệnh nhanh và đơn giản. Bạn cũng có thể sử dụng nó để tạo trạng thái gỡ lỗi trong khi phát triển một dự án đơn giản.
Ví dụ: nếu chúng ta tạo một trò chơi đoán số đơn giản thì chúng ta có thể sử dụng +
toán tử như hình dưới đây:
import random
random_number = random.randint(1,100)
user_guess = None
while True:
print('Please guess the number between 1 and 100 : ')
user_guess = int(input())
if user_guess == random_number:
print('Correct!')
else:
print("Try Again!")
#prints for debugging
print("Random Number: "+ str(random_number))
print("User Guess: "+ str(user_guess))
Các câu lệnh gỡ lỗi được sử dụng trong mã trên sẽ không còn trong mã cuối cùng của bạn. (Bạn sẽ không muốn đưa ra con số để đoán đúng không?) Vì vậy, bạn có thể sử dụng phương pháp nối trong bản in của mình trong khi phát triển mã của mình.
Khi bạn đang thêm báo cáo ghi nhật ký, bạn có thể thích .format()
hoặc f string
các phương pháp vì chúng sẽ làm cho các câu lệnh của bạn trở nên mô-đun hơn. Việc chỉ định độ chính xác/định dạng cho chính loại dữ liệu đó cũng sẽ dễ dàng hơn.
Đúng! Chuỗi mẫu là một trong những kỹ thuật như vậy được cung cấp dưới dạng một lớp trong mô-đun chuỗi của thư viện chuẩn Python. Nó được nhập dưới dạng một mô-đun và .substitute()
phương pháp được sử dụng để thay thế trình giữ chỗ.
Điều đó đang được nói, cho đến nay tôi chưa bao giờ phải sử dụng điều này trong kinh nghiệm viết mã của mình và chỉ biết về nó khi thực hiện nghiên cứu cho blog này.
Định dạng chuỗi Python là một công cụ quan trọng hàng ngày mà một lập trình viên Python cần biết. Mỗi ngôn ngữ mã hóa dường như định dạng chuỗi theo cách tương tự. Nó cũng là một phần rất quan trọng tại sao chúng ta sử dụng ngôn ngữ kịch bản.
Trong số các cách định dạng chuỗi khác nhau này, có vẻ như cách f string
phương pháp là ở đây để ở lại, cùng với .format()
và nối. Chúng ta có thể thấy cú pháp Python2 biến mất khi hầu hết các thư viện cũ bắt đầu hỗ trợ Python3.
Đây là một cheat sheet hữu ích chứa cú pháp Python cơ bản hơn và cả một số phương thức chuỗi để bạn tham khảo.
Các ngôn ngữ lập trình khác dường như tuân theo cú pháp tương tự khi nói đến độ chính xác và biểu diễn, đồng thời dựa vào sự thay thế biến. Nhưng chúng khác nhau về cách chúng xuất các chuỗi được định dạng ra bàn điều khiển.
C ++ là ngoại lệ có thể nhìn thấy ở đây với cout
phương pháp từ thư viện tiêu chuẩn. Java, đúng với bản chất của nó, sử dụng System.out.println()
trong khi JavaScript sử dụng console.log()
. Bạn sẽ tìm thấy một phương pháp có thể so sánh được cho từng ngôn ngữ ở đó.
suchin Ravi là một nhà giáo dục & công nghệ, đồng thời dạy khoa học máy tính tại YoungWonks. Anh ấy làm việc với tư cách là nhà phát triển phần mềm hàng đầu tại Wonksknow LLC.