Hướng dẫn python f-string format float comma - python định dạng f-string float dấu phẩy

Đối với một số điều khiển máy trong Python, tôi viết kết quả vào tệp văn bản, rằng người khác có thể sao chép vào Excel (đây là cách thuận tiện nhất trong tình huống này). Tuy nhiên, ở Hà Lan, Excel có dấu phẩy là dấu phân cách thập phân và do đó tôi muốn có kết quả "vị trí" trong tệp văn bản là 123.456, nhưng khi tôi sử dụng phương pháp F-String như thế này:

    resultfile.write(f"Position\t{position:.5}")

Điều này rõ ràng sẽ dẫn đến một dấu phân cách thập phân chấm.

Làm thế nào tôi có thể thay đổi điều này thành dấu phẩy mà không lặp lại toàn bộ tệp int cuối cùng và thay thế các dấu chấm bằng dấu phẩy?

Đã hỏi ngày 27 tháng 3 năm 2019 lúc 14:30Mar 27, 2019 at 14:30

Hướng dẫn python f-string format float comma - python định dạng f-string float dấu phẩy

2

Nếu bạn muốn định dạng nổi với dấu phẩy trong chuỗi F, bạn có thể sử dụng thay thế sau khi đúc phao vào một chuỗi:

position = 123.456
f"Position\t{str(position).replace('.',',')}"

Tùy chọn thứ hai là sử dụng Locale mô-đun thư viện tiêu chuẩn Python (nhưng nó không an toàn cho luồng):

import locale
locale.setlocale(locale.LC_ALL, 'nl_NL')
f"Position\t{locale.format('%.3f', position)}"

Tùy chọn thứ ba là sử dụng thư viện Babel (ưa thích trong trường hợp thói quen thư viện):

from babel.numbers import format_decimal
f"Position\t{format_decimal(position, locale='nl_NL')}"

Tất cả ba tùy chọn trả về cùng một kết quả cho ví dụ đã cho:

'Position\t123,456'

Đã trả lời ngày 14 tháng 6 năm 2019 lúc 9:43Jun 14, 2019 at 9:43

Kadeekadeekadee

7,2681 Huy hiệu vàng 38 Huy hiệu bạc 30 Huy hiệu Đồng1 gold badge38 silver badges30 bronze badges

Như @michel-de-ruiter đã đề cập, định dạng

position = 123.456
f"Position\t{str(position).replace('.',',')}"
0 không hoạt động với Locale. Mặt khác, bạn không thể đặt độ chính xác bằng định dạng
position = 123.456
f"Position\t{str(position).replace('.',',')}"
1. Ví dụ: nếu bạn muốn 4 chữ số sau khi phân tách thập phân:

import locale
locale.setlocale(locale.LC_ALL, 'nl_NL')

position = 123.45678999
print(f'{position:.4n}')  # output: 123,4 (not quite what we wanted!)

Tuy nhiên, bạn có thể làm tròn số với độ chính xác mong muốn trước khi định dạng nó:

print(f'{round(position, 4):n}')  # output: 123,4567 (that's it!)

Đã trả lời ngày 9 tháng 2 năm 2021 lúc 20:59Feb 9, 2021 at 20:59

BaumanbaumannBaumann

1.07111 huy hiệu bạc20 Huy hiệu đồng11 silver badges20 bronze badges

Nếu bạn muốn tránh các phụ thuộc, hàm đơn giản sau đây có thể phù hợp với nhu cầu của bạn:

def comma_num(n,f=''):
    return ('{'+f+'}').format(n).replace('.',',')

n = 1.23

f'Whatever {comma_num(n)}'
'Whatever {}'.format(comma_num(n))
>>>'Whatever 1,23'

f'Whatever {comma_num(n,":6.4f")}'
'Whatever {}'.format(comma_num(n,':6.4f'))
>>>'Whatever 1,2300'

Đã trả lời ngày 5 tháng 3 lúc 14:06Mar 5 at 14:06

MMJMMJmmj

5.2312 Huy hiệu vàng41 Huy hiệu bạc49 Huy hiệu đồng2 gold badges41 silver badges49 bronze badges

Nếu định dạng

position = 123.456
f"Position\t{str(position).replace('.',',')}"
2 đủ tốt cho bạn, hãy sử dụng
position = 123.456
f"Position\t{str(position).replace('.',',')}"
1 thay thế:

resultfile.write(f"Position\t{position:.7n}")

Trong khi

position = 123.456
f"Position\t{str(position).replace('.',',')}"
1 hoạt động (sử dụng cài đặt địa phương hiện tại khi được sử dụng) thay vì cả
position = 123.456
f"Position\t{str(position).replace('.',',')}"
5 và
position = 123.456
f"Position\t{str(position).replace('.',',')}"
2, không có điều gì như vậy cho định dạng
position = 123.456
f"Position\t{str(position).replace('.',',')}"
0 thật không may ...

Đã trả lời ngày 17 tháng 12 năm 2020 lúc 10:47Dec 17, 2020 at 10:47

Michel de Ruitermichel de RuiterMichel de Ruiter

6.4885 Huy hiệu vàng 50 Huy hiệu bạc67 Huy hiệu Đồng5 gold badges50 silver badges67 bronze badges

Một giải pháp đơn giản hơn có thể là:

f"Position\t{position:,.5f}"

Đã trả lời ngày 8 tháng 6 năm 2019 lúc 1:53Jun 8, 2019 at 1:53

2

%D và %f trong python là gì?

Ví dụ: "In %D" %(3,78) # Điều này sẽ xuất ra 3 num1 = 5 num2 = 10 " %d + %d bằng %d" %(num1, num2, num1 + num2) # Điều này sẽ xuất hiện # 5 + 10 bằng 15. %F Formatter được sử dụng để nhập các giá trị float hoặc số có giá trị sau vị trí thập phân.The %f formatter is used to input float values, or numbers with values after the decimal place.

Làm thế nào để bạn sử dụng .2f trong Python?

2F là một trình giữ chỗ cho số điểm nổi.Vì vậy, %D được thay thế bằng giá trị đầu tiên của tuple tức là 12 và %.2F được thay thế bằng giá trị thứ hai I.E 150.87612.... Định dạng chuỗi Python ..

F {} trong Python là gì?

Các dây F F cung cấp một cách để nhúng các biểu thức bên trong các chữ viết, sử dụng cú pháp tối thiểu.Cần lưu ý rằng một chuỗi F thực sự là một biểu thức được đánh giá tại thời điểm chạy, không phải là một giá trị không đổi.Trong mã nguồn Python, một chuỗi F là một chuỗi theo nghĩa đen, có tiền tố với F, chứa các biểu thức bên trong niềng răng.F-strings provide a way to embed expressions inside string literals, using a minimal syntax. It should be noted that an f-string is really an expression evaluated at run time, not a constant value. In Python source code, an f-string is a literal string, prefixed with f , which contains expressions inside braces.

Làm cách nào để thay đổi dấu phân cách ngàn trong Python?

Phương pháp 1: Các chuỗi F sử dụng các chuỗi F hiện đại, theo tôi, là giải pháp pythonic nhất để thêm dấu phẩy dưới dạng hàng ngàn người cho tất cả các phiên bản Python trên 3.6: f '{1000000 :,}'.Phần bên trong trong các dấu ngoặc xoăn:, nói với định dạng số và sử dụng dấu phẩy như hàng ngàn dấu phân cách.f'{1000000:,}' . The inner part within the curly brackets :, says to format the number and use commas as thousand separators.