Làm cách nào để bạn thêm dấu phẩy vào dấu phân cách hàng nghìn cho các số trong python?

Thêm hàng nghìn dấu phân cách là một trong những cách đơn giản nhất để nhân bản hóa đầu ra của chương trình, cải thiện giao diện chuyên nghiệp và khả năng đọc của chương trình

Trong thế giới tài chính, đầu ra với hàng nghìn phân cách là tiêu chuẩn. Người dùng tài chính và lập trình viên không chuyên nghiệp thấy cách tiếp cận ngôn ngữ gây khó chịu, phức tạp và không rõ ràng

Mô-đun ngôn ngữ đưa ra hai thách thức khác. Đầu tiên, đó là cài đặt toàn cầu và không phù hợp với các ứng dụng đa luồng cần phân phối các yêu cầu ở nhiều ngôn ngữ. Thứ hai, tên của một ngôn ngữ có liên quan [chẳng hạn như “de_DE”] có thể khác nhau giữa các nền tảng hoặc có thể hoàn toàn không được xác định. Các tài liệu cho mô-đun ngôn ngữ mô tả chi tiết những thách thức này và nhiều thách thức khác

Mục tiêu không phải là thay thế mô-đun ngôn ngữ, để thực hiện các nhiệm vụ quốc tế hóa hoặc đáp ứng mọi quy ước có thể. Những tác vụ như vậy phù hợp hơn với các công cụ mạnh mẽ như Babel. Thay vào đó, mục tiêu là làm cho một nhiệm vụ phổ biến, hàng ngày trở nên dễ dàng hơn đối với nhiều người dùng

Đề xuất chính [từ Nick Coghlan, ban đầu được gọi là Đề xuất I]

Một dấu phẩy sẽ được thêm vào ngôn ngữ nhỏ của trình xác định định dạng []

[[fill]align][sign][#][0][width][,][.precision][type]

Tùy chọn ',' cho biết rằng dấu phẩy phải được đưa vào đầu ra dưới dạng dấu phân cách hàng nghìn. Đối với các ngôn ngữ không sử dụng dấu chấm làm dấu thập phân, các ngôn ngữ sử dụng quy ước khác để phân tách chữ số sẽ cần sử dụng mô-đun ngôn ngữ để có được định dạng phù hợp

Đề xuất hoạt động tốt với số float, int và số thập phân. Nó cũng cho phép dễ dàng thay thế các dải phân cách khác. Ví dụ

format[n, "6,d"].replace[",", "_"]

Kỹ thuật này hoàn toàn chung chung nhưng hơi bất tiện trong một trường hợp cần hoán đổi dấu phẩy và dấu chấm.

format[n, "6,f"].replace[",", "X"].replace[".", ","].replace["X", "."]

Đối số chiều rộng có nghĩa là tổng chiều dài bao gồm dấu phẩy và dấu thập phân

format[1234, "08,d"]     -->    '0001,234'
format[1234.5, "08,.1f"] -->    '01,234.5'

Tùy chọn ',' được xác định như hình trên cho các loại 'd', 'e', ​​'f', 'g', 'E', 'G', '%', 'F' và ‘’. Để cho phép các tiện ích mở rộng trong tương lai, nó không được xác định cho các loại khác. nhị phân, bát phân, hex, ký tự, v.v.

Đề xuất này có ưu điểm đơn giản hơn đề xuất thay thế nhưng kém linh hoạt hơn nhiều và đáp ứng nhu cầu của ít người dùng hơn ngay lập tức. Dự kiến ​​sẽ có một số giải pháp khác để chỉ định các dấu phân cách thay thế

Phiên bản hiện tại của Mini-Ngôn ngữ

  • Trăn 2. 6 tài liệu
  • Định dạng chuỗi nâng cao PEP 3101

Nghiên cứu về những gì các ngôn ngữ khác làm

Quét web, tôi thấy rằng dấu phân cách hàng nghìn thường là một trong COMMA, DOT, SPACE, APOSTROPHE hoặc UNDERSCORE

C-Sharp cung cấp cả hai kiểu [định dạng ảnh và kiểu xác định]. Phương pháp xác định loại là nhận biết ngôn ngữ. Định dạng ảnh chỉ cung cấp Dấu phẩy dưới dạng dấu phân cách hàng nghìn

String.Format["{0:n}", 12400]     ==>    "12,400"
String.Format["{0:0,0}", 12400]   ==>    "12,400"

Lisp thông thường sử dụng COLON trước bộ xác định loại thập phân

format[n, "6,d"].replace[",", "_"]
0 để phát ra COMMA dưới dạng dấu phân cách hàng nghìn. Dạng tổng quát của
format[n, "6,d"].replace[",", "_"]
0 là
format[n, "6,d"].replace[",", "_"]
2. Padchar mặc định là SPACE. Dấu phẩy mặc định là COMMA. Khoảng thời gian giao tiếp mặc định là ba

________số 8

  • Ngôn ngữ ADA cho phép UNDERCORES ở dạng chữ số

Visual Basic và các phiên bản tương tự của nó [như MS Excel] sử dụng một phong cách hoàn toàn khác và có các bộ xác định định dạng tùy chỉnh cực kỳ linh hoạt như

"_[$* #,##0_]".

COBOL sử dụng mệnh đề hình ảnh như

format[n, "6,d"].replace[",", "_"]
0

Java cung cấp số thập phân. Lớp định dạng sử dụng các mẫu hình ảnh [một cho số dương và một tùy chọn cho số âm] chẳng hạn như.

format[n, "6,d"].replace[",", "_"]
3. Nó cho phép các nhóm tùy ý bao gồm hàng trăm và mười nghìn và các nhóm không đồng đều. Các ký tự mẫu đặc biệt không được bản địa hóa [sử dụng DOT cho dấu tách thập phân và COMMA cho dấu tách nhóm]. Người dùng có thể cung cấp một bộ ký hiệu thay thế bằng cách sử dụng đối tượng DecimalFormatSymbols của trình định dạng

Đề xuất thay thế [từ Eric Smith, ban đầu được gọi là Đề xuất II]

Làm cho người dùng có thể chỉ định cả dấu tách hàng nghìn và dấu tách thập phân nhưng không nhận biết ngôn ngữ. Để đơn giản, hãy giới hạn các lựa chọn ở COMMA, DOT, SPACE, APOSTROPHE hoặc UNDERSCORE. SPACE có thể là U+0020 hoặc U+00A0

Bất cứ khi nào dấu tách được theo sau bởi một độ chính xác, thì đó là dấu tách thập phân và dấu tách tùy chọn trước nó là dấu tách hàng nghìn. Khi không có độ chính xác, một bộ xác định đơn độc có nghĩa là dấu phân cách hàng nghìn

format[n, "6,d"].replace[",", "_"]
2

ví dụ

format[n, "6,d"].replace[",", "_"]
3

Đề xuất này đáp ứng hầu hết các nhu cầu, nhưng phải trả giá bằng việc nỗ lực hơn một chút để phân tích cú pháp. Không phải mọi quy ước khả thi đều được đề cập, nhưng ít nhất một trong các tùy chọn [dấu cách hoặc dấu gạch dưới] phải dễ đọc, dễ hiểu và hữu ích cho những người thuộc nhiều nền tảng khác nhau

Như được minh họa trong các ví dụ, đối số chiều rộng có nghĩa là tổng chiều dài bao gồm dấu phân cách hàng nghìn và dấu phân cách thập phân

Không có thay đổi nào được đề xuất cho mô-đun ngôn ngữ

Dấu phân cách hàng nghìn được xác định như hình trên cho các loại 'd', 'e', ​​'f', 'g', '%', 'E', 'G' và 'F'. Để cho phép các tiện ích mở rộng trong tương lai, nó không được xác định cho các loại khác. nhị phân, bát phân, hex, ký tự, v.v.

Hạn chế đối với đề xuất thay thế này là khó phân tích cú pháp một cách tinh thần cho dù một dấu tách đơn là dấu tách hàng nghìn hay dấu tách thập phân. Có lẽ quá phức tạp để liên kết dấu tách thập phân với bộ xác định độ chính xác

Chủ Đề