Python - Форматирование элементов в списке чисел, которые будут строками с символом валюты - PullRequest
1 голос
/ 24 октября 2019

У меня есть список чисел, которые являются валютными значениями, которые я хотел бы преобразовать в валюты с символом:

Текущий список

list = [200,4002,4555,7533]

Ниже приводится то, что возвращается, если я печатаюприведенный выше список:

[(Decimal('200'), Decimal('4002'), Decimal('4555'), Decimal('7533')]

Ожидаемый результат

list = ['$200','$4,002','$4,555','$7,533'] <<--These are basically number formatted for 1000's separator with the currency symbol

Ответы [ 3 ]

2 голосов
/ 24 октября 2019

Предполагая, что вы хотите выводить в виде строк:

In [123]: lst = [200,4002,4555,7533]

In [124]: [f'${cur:,}' for cur in lst]
Out[124]: ['$200', '$4,002', '$4,555', '$7,533']

Также не называйте ваши переменные как некоторые встроенные.

0 голосов
/ 24 октября 2019

Вместо того, чтобы вручную форматировать значения в вашем списке в строки, содержащие представления валют, рекомендуется использовать стандартные библиотечные функции, предназначенные именно для этой работы. Здесь вы можете использовать функции из модуля locale. Функции предоставляют вам доступ к нескольким удобным функциям, например, для представления дат, времени и валют в формате, который соответствует текущим настройкам локали. Локаль может быть установлена ​​операционной системой компьютера, на котором выполняется программа, или программистом самой программы.

Первое, что вам нужно сделать, это загрузить модуль locale. Затем вы устанавливаете настройку локали либо на системную настройку по умолчанию, либо на выбранную вами локаль:

import locale

locale.setlocale(locale.LC_ALL, "")   # to use the system-wide locale setting
locale.setlocale(locale.LC_ALL, "en_US.utf-8")   # to use the USA locale

Теперь вы можете использовать функцию currency для форматирования значения с использованием текущей настройки локали:

lst = [200, 4002, 4555, 7533]
cur_lst = [locale.currency(val) for val in lst]

print(cur_list)
['$200.00', '$4002.00', '$4555.00', '$7533.00']

Функция currency имеет три параметра, которые позволяют настроить выход. Опция grouping вставит соответствующие групповые метки для разделения тысяч, миллионов и т. Д.: * 10101 *

locale.currency(123456, grouping=True)
'$123,456.00'

locale.currency(123456, grouping=False)  # the default
'$123456.00'

В опции international вместо символа валюты используется международная стандартная аббревиатура валюты:

locale.currency(123456, international=True)
'USD 123456.00'

locale.currency(123456, international=False)  # the default
'$123456.00'

Наконец, установка для symbol опции True подавляет отображение символа валюты в целом.

0 голосов
/ 24 октября 2019

Избегайте использования встроенных имен, таких как list для переменных. Вы также не можете выводить в этом формате без преобразования в строки, как показано ниже:

l = [200, 4002, 4555, 7533]

l = ['${:0,.0f}'.format(x) for x in l]
print(l)

Печать:

['$200', '$4,002', '$4,555', '$7,533']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...