Logo Zephyrnet

Sự khác biệt giữa %s và %d trong định dạng chuỗi Python

Ngày:

Giới thiệu

Định dạng chuỗi, nói một cách đơn giản, là quá trình xây dựng một chuỗi bằng cách chèn một số dữ liệu cụ thể hoặc được tính toán vào một trình giữ chỗ chuỗi. Đây là một công cụ không thể thiếu khi bạn xử lý các đầu ra thân thiện với người dùng, nhật ký gỡ lỗi hoặc tạo văn bản động cho các mục đích khác nhau.

Python cung cấp nhiều cách để định dạng chuỗi. Ba phương pháp chính là định dạng kiểu cũ bằng cách sử dụng % nhà điều hành, str.format() phương thức, xuất hiện trong Python 2.6 và cách hiện đại nhất, chuỗi f, được giới thiệu trong Python 3.6.

Trong khi chuỗi fstr.format() đã trở nên phổ biến do tính biểu cảm và dễ đọc của chúng, % toán tử vẫn là một phương pháp cơ bản, đặc biệt là trong cơ sở mã cũ hơn. Hiểu biết %s%d, hai chỉ định định dạng cơ bản được sử dụng với % toán tử, là một bước quan trọng trong việc thành thạo định dạng chuỗi của Python.

Trong bài viết này, chúng ta sẽ đi sâu vào %s%d chỉ định định dạng, giải thích sự khác biệt, cách sử dụng và cách chúng tương tác với các loại dữ liệu khác nhau. Đến cuối bài viết này, bạn sẽ có hiểu biết vững chắc về các khía cạnh quan trọng này của định dạng chuỗi trong Python.

%s vs %d: Những thứ cơ bản

Trong Python, % Toán tử được sử dụng để định dạng chuỗi. Nó diễn giải đối số bên trái giống như một printf-style chuỗi định dạng được áp dụng cho đối số phù hợp, cho phép bạn định dạng chuỗi theo nhiều cách khác nhau. Hai trong số các định dạng phổ biến nhất được sử dụng với % nhà điều hành là %s%d.

%s Định dạng chỉ định

Sản phẩm %s định dạng specifier là một trình giữ chỗ cho một chuỗi. Các %s trình xác định chuyển đổi đối tượng bằng cách sử dụng str(), có nghĩa là nó không nhất thiết phải là một chuỗi. Nó có thể là bất kỳ đối tượng Python nào, chẳng hạn như một số hoặc thậm chí là một danh sách. Python sẽ tự động chuyển đổi các đối tượng này thành biểu diễn chuỗi của chúng:

name = "Bob"
print("Hello, %s!" % name)

Điều này sẽ cung cấp cho chúng tôi:

Hello, Bob!

%d Định dạng chỉ định

Mặt khác, %d định dạng specifier là một trình giữ chỗ cho một số nguyên thập phân. Các %d trình xác định yêu cầu một số nguyên hoặc một số có thể được chuyển đổi dễ dàng thành một số nguyên, như boolean:

age = 25
print("I am %d years old." % age)

Điều này sẽ dẫn đến:

I am 25 years old.

Khi Nào Nên Sử Dụng %s

Sản phẩm %s định dạng định dạng là một trong những công cụ linh hoạt nhất trong kho vũ khí định dạng chuỗi của Python. Vì nó hoàn toàn chuyển đổi đối tượng được cung cấp thành một chuỗi bằng cách sử dụng str() chức năng, trình xác định này thường được sử dụng khi loại chính xác của đối tượng được nhúng trong chuỗi là không biết hoặc không liên quan.

Lưu ý: Khi bạn sử dụng %s trình xác định định dạng với một đối tượng không phải chuỗi trong Python, str() chức năng được gọi ngầm trên đối tượng đó để chuyển đổi nó thành biểu diễn chuỗi của nó. Điều này có nghĩa rằng %s có thể được sử dụng để định dạng bất kỳ đối tượng nào, không chỉ các chuỗi.

Dữ liệu biến

Nếu bạn có dữ liệu biến đổi cần biểu diễn dưới dạng chuỗi, bạn có thể sử dụng %s. Điều này có thể bao gồm tên người dùng, đường dẫn tệp hoặc bất kỳ thông tin nào khác có thể được trình bày dưới dạng văn bản, ví dụ:

username = "Bob"
print("Logged in user: %s" % username)

Điều này sẽ mang lại cho chúng tôi với:

Logged in user: Bob

Dữ liệu không phải chuỗi

Ngay cả khi dữ liệu của bạn không phải là một chuỗi, bạn vẫn có thể sử dụng %s. Python sẽ tự động chuyển đổi dữ liệu thành biểu diễn chuỗi của nó. Ví dụ: nếu bạn muốn in danh sách dưới dạng một phần của chuỗi:

fruits = ["apple", "banana", "cherry"]
print("Fruits: %s" % fruits)

Điều này sẽ xuất ra như sau:

Fruits: ['apple', 'banana', 'cherry']

Lưu ý rằng, vì chúng ta đã chuyển toàn bộ mảng, nên nó cũng in cả dấu ngoặc, dấu phẩy và dấu nháy đơn.

Nhiều điểm dữ liệu

Nếu bạn muốn định dạng nhiều phần dữ liệu thành một chuỗi, bạn có thể sử dụng nhiều %s người chỉ định. Bạn sẽ cần phải cung cấp một bộ đồ dữ liệu phù hợp với số lượng %s thông số kỹ thuật:

username = "Bob"
access_level = "Admin"
print("User: %s, Access Level: %s" % (username, access_level))

Điều này sẽ đặt usernameaccess_level theo đúng thứ tự trong chuỗi đầu ra:

User: Bob, Access Level: Admin

Ghi nhớ: Trong khi %s linh hoạt và xử lý các loại dữ liệu khác nhau một cách duyên dáng, luôn cân nhắc xem đó có phải là tùy chọn phù hợp nhất hay không dựa trên loại dữ liệu và trường hợp sử dụng cụ thể của bạn. Trong một số trường hợp, sử dụng một công cụ xác định định dạng cụ thể hơn (như %d cho số nguyên hoặc %.2f đối với các số dấu phẩy động có hai chữ số thập phân) có thể cung cấp nhiều quyền kiểm soát hơn đối với định dạng đầu ra của bạn.

Khi Nào Nên Sử Dụng %d

Sản phẩm %d định dạng định dạng được sử dụng khi bạn muốn nhúng một số nguyên vào một chuỗi. Nó xử lý đối số dưới dạng số nguyên thập phân (cơ số 10) và có thể là một công cụ đáng tin cậy khi xử lý dữ liệu số ở định dạng chuỗi.

Lưu ý: Trong khi %d là một công cụ tuyệt vời để nhúng số nguyên vào chuỗi, điều quan trọng cần lưu ý là nó không tự động chuyển đổi các loại không phải số nguyên. Ví dụ, sử dụng %d với một số dấu phẩy động sẽ dẫn đến một TypeError. Nếu bạn có số dấu phẩy động, trước tiên bạn cần chuyển đổi nó thành số nguyên hoặc sử dụng công cụ xác định định dạng được thiết kế cho số dấu phẩy động, chẳng hạn như %f or %.2f.

Hơn nữa, trong khi %d có thể định dạng booleans, trong hầu hết các trường hợp, sử dụng %s với một boolean có thể dễ đọc hơn khi nó in True or False thay vì 1 or 0. Do đó, hãy luôn xem xét trường hợp sử dụng cụ thể và loại dữ liệu mà bạn đang làm việc khi quyết định bộ xác định định dạng.

Dữ liệu số nguyên

Nếu bạn có dữ liệu số nguyên, chẳng hạn như tuổi hoặc số lượng, bạn có thể sử dụng %d để nhúng nó vào một chuỗi:

age = 25
print("I am %d years old." % age)

Xem hướng dẫn thực hành, thực tế của chúng tôi để học Git, với các phương pháp hay nhất, các tiêu chuẩn được ngành công nghiệp chấp nhận và bảng lừa đảo đi kèm. Dừng lệnh Googling Git và thực sự học nó!

Chạy điều này sẽ dẫn đến:

I am 25 years old.

Booleans

Vous sử dụng pouvez aussi %d với các phép toán luận. Python xử lý True as 1False as 0:

print("True is %d" % True)
print("False is %d" % False)

Theo dự kiến, điều này sẽ cung cấp cho chúng tôi:

True is 1
False is 0

Nhiều điểm dữ liệu số nguyên

Nếu bạn đang xử lý nhiều điểm dữ liệu số nguyên, bạn có thể sử dụng nhiều %d specifiers và cung cấp một tuple với các giá trị tương ứng:

height = 180
weight = 75
print("My height is %d cm and my weight is %d kg." % (height, weight))

Kết quả là:

My height is 180 cm and my weight is 75 kg.

Sai lầm cần tránh

Định dạng chuỗi của Python là một tính năng mạnh mẽ, nhưng cũng như bất kỳ công cụ mạnh mẽ nào, điều quan trọng là phải sử dụng nó đúng cách để tránh lỗi và duy trì khả năng đọc mã của bạn. Dưới đây liệt kê một số cạm bẫy phổ biến nhất cần tránh khi sử dụng %s%d.

Công cụ xác định định dạng không khớp

Đảm bảo bạn đang sử dụng công cụ xác định định dạng chính xác cho loại dữ liệu mà bạn đang làm việc. sử dụng %d với kiểu không nguyên có thể dẫn đến sai sót, trong khi sử dụng %s với các loại số có thể không cung cấp cho bạn quyền kiểm soát mong muốn đối với định dạng đầu ra.

Số đối số không chính xác

Khi sử dụng nhiều định dạng định dạng, hãy đảm bảo rằng bạn cung cấp đúng số đối số. Nếu số lượng chỉ định định dạng trong chuỗi không khớp với số lượng đối số được cung cấp, Python sẽ tăng TypeError:

print("My name is %s and I am %d years old." % ("Bob"))

Đầu ra:

TypeError: not enough arguments for format string

Sử dụng dấu ngoặc đơn không chính xác

Khi cung cấp nhiều đối số để định dạng chuỗi, bạn cần đặt chúng trong một bộ. Quên dấu ngoặc đơn có thể dẫn đến các lỗi khó hiểu:

print("My name is %s and I am %d years old." % "Bob", 25)

Điều này sẽ gây ra lỗi sau:

TypeError: not all arguments converted during string formatting

Sửa nó bằng cách thêm dấu ngoặc đơn:

print("My name is %s and I am %d years old." % ("Bob", 25))

Sử dụng % với từ điển

Khi sử dụng % toán tử với từ điển, hãy nhớ sử dụng %(key)s or %(key)d để chỉ định khóa trong từ điển. Quên làm điều này có thể dẫn đến TypeError or KeyError:

data = {"name": "Bob", "age": 25}
print("My name is %s and I am %d years old." % data)

Đầu ra:

TypeError: not enough arguments for format string

Sửa nó bằng cách thêm các phím:

data = {"name": "Bob", "age": 25}
print("My name is %(name)s and I am %(age)d years old." % data)

Khuyên bảo: Khi sử dụng định dạng chuỗi trong Python, rõ ràng là chìa khóa. Viết mã của bạn theo cách mà người khác dễ hiểu và luôn xác thực đầu vào của bạn trước khi chuyển chúng sang thao tác định dạng chuỗi.

Kết luận

Hiểu được các sắc thái của định dạng chuỗi trong Python có thể giúp dễ đọc mã của bạn, cũng như khả năng làm việc với các loại dữ liệu khác nhau của bạn. Như chúng ta đã thấy, các %s%d bộ xác định định dạng là công cụ hữu ích để kết hợp dữ liệu chuỗi và số nguyên vào văn bản, tương ứng.

%s chuyển đổi đối tượng đã cho thành một chuỗi bằng cách sử dụng str() chức năng, làm cho nó linh hoạt cho bất kỳ loại dữ liệu nào, trong khi %d là cụ thể cho số nguyên. Điều quan trọng là phải sử dụng chúng một cách thích hợp và tránh các lỗi phổ biến, chẳng hạn như thông số định dạng không khớp hoặc số lượng đối số không chính xác.

Trong khi % toán tử là một phương pháp định dạng chuỗi hữu ích, Python cung cấp các kỹ thuật khác như f-strings, str.format() phương thức và chuỗi mẫu, mỗi chuỗi đều có lợi ích riêng. Việc lựa chọn phương thức định dạng chuỗi phần lớn phụ thuộc vào yêu cầu cụ thể và sở thích cá nhân của bạn.

tại chỗ_img

Tin tức mới nhất

tại chỗ_img

Trò chuyện trực tiếp với chúng tôi (chat)

Chào bạn! Làm thế nào để tôi giúp bạn?