Python đã có các trình định dạng chuỗi tuyệt vời trong nhiều năm nhưng tài liệu về chúng quá lý thuyết và kỹ thuật. Với trang web này, chúng tôi cố gắng hiển thị cho bạn các trường hợp sử dụng phổ biến nhất được đề cập bởi API định dạng chuỗi và kiểu với các ví dụ thực tế Show
Tất cả các ví dụ trên trang này đều hoạt động hiệu quả với Python 2. 7, 3. 2, 3. 3, 3. 4 và 3. 5 mà không yêu cầu bất kỳ thư viện bổ sung nào Thông tin chi tiết về hai phương pháp định dạng này có thể được tìm thấy trong tài liệu Python chính thức Nếu bạn muốn đóng góp thêm ví dụ, vui lòng tạo yêu cầu kéo trên Github Mục lụcĐịnh dạng cơ bảnĐịnh dạng vị trí đơn giản có lẽ là trường hợp sử dụng phổ biến nhất. Sử dụng nó nếu thứ tự các đối số của bạn không có khả năng thay đổi và bạn chỉ có rất ít phần tử muốn nối Vì các phần tử không được biểu thị bằng thứ gì đó mang tính mô tả như tên nên kiểu đơn giản này chỉ nên được sử dụng để định dạng một số phần tử tương đối nhỏ Mới'{} {}'.format('one', 'two') Với định dạng kiểu mới, có thể (và trong Python 2. 6 thậm chí là bắt buộc) để cung cấp cho trình giữ chỗ một chỉ mục vị trí rõ ràng Điều này cho phép sắp xếp lại thứ tự hiển thị mà không thay đổi các đối số Thao tác này không khả dụng với định dạng kiểu cũ Mới'{1} {0}'.format('one', 'two') chuyển đổi giá trịTrình định dạng đơn giản kiểu mới theo mặc định gọi phương thức của một đối tượng để biểu diễn nó. Nếu bạn chỉ muốn hiển thị đầu ra của '{0!s} {0!r}'.format(Data())2 hoặc '{0!s} {0!r}'.format(Data())3, bạn có thể sử dụng cờ chuyển đổi '{0!s} {0!r}'.format(Data())4 hoặc '{0!s} {0!r}'.format(Data())5 Trong %-style, bạn thường sử dụng '{0!s} {0!r}'.format(Data())6 để biểu diễn chuỗi nhưng có '{0!s} {0!r}'.format(Data())7 để chuyển đổi '{0!s} {0!r}'.format(Data())3 Cài đặtclass Data(object): def __str__(self): return 'str' def __repr__(self): return 'repr' Mới'{0!s} {0!r}'.format(Data()) Trong Python 3 tồn tại một cờ chuyển đổi bổ sung sử dụng đầu ra của '{0!s} {0!r}'.format(Data())3 nhưng thay vào đó sử dụng class Data(object): def __repr__(self): return 'räpr'0 Cài đặtclass Data(object): def __repr__(self): return 'räpr' Mới'{0!r} {0!a}'.format(Data()) Đệm và căn chỉnh chuỗiTheo mặc định, các giá trị được định dạng để chỉ chiếm bao nhiêu ký tự cần thiết để thể hiện nội dung. Tuy nhiên, cũng có thể xác định rằng một giá trị phải được đệm theo một độ dài cụ thể Thật không may, căn chỉnh mặc định khác nhau giữa định dạng kiểu cũ và kiểu mới. Kiểu cũ mặc định căn phải trong khi kiểu mới căn trái Sắp xếp đúng Một lần nữa, định dạng kiểu mới vượt qua biến thể cũ bằng cách cung cấp nhiều quyền kiểm soát hơn đối với cách các giá trị được đệm và căn chỉnh Bạn có thể chọn ký tự đệm Thao tác này không khả dụng với định dạng kiểu cũ Và cả các giá trị căn giữa Thao tác này không khả dụng với định dạng kiểu cũ Khi sử dụng căn giữa mà độ dài của chuỗi dẫn đến sự phân chia không đều của các ký tự đệm, ký tự thừa sẽ được đặt ở bên phải Thao tác này không khả dụng với định dạng kiểu cũ Kết hợp cắt ngắn và đệmCũng có thể kết hợp cắt xén và đệm Mới'{:10.5}'.format('xylophone') sốTất nhiên nó cũng có thể định dạng số số nguyên Cũ'%f' % (3.141592653589793,) Mới'{:f}'.format(3.141592653589793) Số đệmTương tự như chuỗi, số cũng có thể bị giới hạn ở một chiều rộng cụ thể Một lần nữa, tương tự như việc cắt ngắn các chuỗi, độ chính xác cho các số dấu phẩy động giới hạn số lượng vị trí sau dấu thập phân Đối với các dấu phẩy động, giá trị đệm biểu thị độ dài của đầu ra hoàn chỉnh. Trong ví dụ bên dưới, chúng tôi muốn đầu ra của mình có ít nhất 6 ký tự với 2 sau dấu thập phân Cũ'%06.2f' % (3.141592653589793,) Mới'{1} {0}'.format('one', 'two')0 Đối với các giá trị số nguyên cung cấp độ chính xác không có nhiều ý nghĩa và thực sự bị cấm theo kiểu mới (nó sẽ dẫn đến ValueError) Số đã kýTheo mặc định, chỉ các số âm mới có tiền tố là dấu. Điều này có thể được thay đổi tất nhiên Sử dụng một ký tự khoảng trắng để cho biết rằng các số âm phải được thêm vào trước một ký hiệu dấu trừ và một khoảng trắng ở đầu nên được sử dụng cho các số dương Định dạng kiểu mới cũng có thể kiểm soát vị trí của ký hiệu ký hiệu so với phần đệm Thao tác này không khả dụng với định dạng kiểu cũ Trình giữ chỗ được đặt tênCả hai kiểu định dạng đều hỗ trợ trình giữ chỗ có tên Cài đặt'{1} {0}'.format('one', 'two')1 Mới'{1} {0}'.format('one', 'two')2 class Data(object): def __repr__(self): return 'räpr'1 cũng chấp nhận đối số từ khóa Thao tác này không khả dụng với định dạng kiểu cũ Mới'{1} {0}'.format('one', 'two')3 Getitem và GetattrĐịnh dạng kiểu mới cho phép linh hoạt hơn trong việc truy cập các cấu trúc dữ liệu lồng nhau Nó hỗ trợ truy cập các vùng chứa hỗ trợ class Data(object): def __repr__(self): return 'räpr'2 chẳng hạn như từ điển và danh sách Thao tác này không khả dụng với định dạng kiểu cũ Cài đặt'{1} {0}'.format('one', 'two')4 Mới'{1} {0}'.format('one', 'two')5 Mới'{1} {0}'.format('one', 'two')6 Cũng như truy cập các thuộc tính trên các đối tượng thông qua class Data(object): def __repr__(self): return 'räpr'3 Thao tác này không khả dụng với định dạng kiểu cũ Cài đặt'{1} {0}'.format('one', 'two')7 Mới'{1} {0}'.format('one', 'two')8 Cả hai loại quyền truy cập có thể được trộn lẫn tự do và lồng nhau tùy ý Thao tác này không khả dụng với định dạng kiểu cũ Cài đặt'{1} {0}'.format('one', 'two')9 Mớiclass Data(object): def __str__(self): return 'str' def __repr__(self): return 'repr'0 định dạng tham sốNgoài ra, định dạng kiểu mới cho phép tất cả các thành phần của định dạng được chỉ định động bằng cách sử dụng tham số hóa. Định dạng tham số hóa là các biểu thức lồng nhau trong dấu ngoặc nhọn có thể xuất hiện ở bất kỳ đâu trong định dạng gốc sau dấu hai chấm Định dạng kiểu cũ cũng hỗ trợ một số tham số hóa nhưng hạn chế hơn nhiều. Cụ thể là nó chỉ cho phép tham số hóa chiều rộng và độ chính xác của đầu ra Căn chỉnh tham số và chiều rộng Thao tác này không khả dụng với định dạng kiểu cũ Mớiclass Data(object): def __str__(self): return 'str' def __repr__(self): return 'repr'1 Cũclass Data(object): def __str__(self): return 'str' def __repr__(self): return 'repr'2 Mớiclass Data(object): def __str__(self): return 'str' def __repr__(self): return 'repr'3 Mớiclass Data(object): def __str__(self): return 'str' def __repr__(self): return 'repr'4 Định dạng lồng nhau có thể được sử dụng để thay thế bất kỳ phần nào của thông số định dạng, do đó, ví dụ chính xác ở trên có thể được viết lại thành Thao tác này không khả dụng với định dạng kiểu cũ Mớiclass Data(object): def __str__(self): return 'str' def __repr__(self): return 'repr'5 Các định dạng lồng nhau có thể là đối số vị trí. Vị trí phụ thuộc vào thứ tự của dấu ngoặc nhọn mở Thao tác này không khả dụng với định dạng kiểu cũ Mớiclass Data(object): def __str__(self): return 'str' def __repr__(self): return 'repr'6 Và tất nhiên, các đối số từ khóa có thể được thêm vào hỗn hợp như trước đây Thao tác này không khả dụng với định dạng kiểu cũ Mớiclass Data(object): def __str__(self): return 'str' def __repr__(self): return 'repr'7 đối tượng tùy chỉnhVí dụ datetime hoạt động thông qua việc sử dụng phương pháp ma thuật '{0!s} {0!r}'.format(Data())1. Bạn có thể xác định xử lý định dạng tùy chỉnh trong các đối tượng của riêng mình bằng cách ghi đè phương thức này. Điều này cho phép bạn kiểm soát hoàn toàn cú pháp định dạng được sử dụng %s trong Python 3 là gì?%s đóng vai trò giữ chỗ cho giá trị thực . Bạn đặt giá trị thực sau toán tử %. Phương pháp này thường được gọi là cách "cũ hơn" vì Python 3 đã giới thiệu str. format() và chuỗi ký tự được định dạng (chuỗi f). trong str.
%d và %i trong Python là gì?Đây là trăn. org phải nói về %i. Số thập phân có dấu. Và %d. Số thập phân có dấu. %d là số thập phân và %i là số nguyên .
Là gì. 2f bằng Python?Như mong đợi, số dấu phẩy động (1. 9876) được làm tròn đến hai chữ số thập phân – 1. 99. Vì thế %. 2f nghĩa là làm tròn đến hai chữ số thập phân .
Sự khác biệt giữa %S và %R trong Python là gì?Trình xác định %s chuyển đổi đối tượng bằng str() và %r chuyển đổi đối tượng bằng repr() . |