我有一个非常好的工作snippit代码,但我想知道是否有人有任何更好的建议如何这样做:
val = ''.join([c for c in val if c in '1234567890.'])
你会怎么做?
我从Python中的货币格式学习,使用语言环境模块将数字格式化为货币.例如,
#! /usr/bin/env python
# -*- coding: utf-8 -*-
import locale
value = 123456789
l = locale.setlocale(locale.LC_ALL, '')     # LC_CTYPE=en_US.UTF-8;LC_NUMERIC=fr_FR.UTF-8;LC_TIME=fr_FR.UTF-8;LC_COLLATE=en_US.UTF-8;LC_MONETARY=fr_FR.UTF-8;LC_MESSAGES=en_US.UTF-8;LC_PAPER=fr_FR.UTF-8;LC_NAME=fr_FR.UTF-8;LC_ADDRESS=fr_FR.UTF-8;LC_TELEPHONE=fr_FR.UTF-8;LC_MEASUREMENT=fr_FR.UTF-8;LC_IDENTIFICATION=fr_FR.UTF-8
s = locale.currency(value, grouping=True)   # 123 456 789,00 €
locale.setlocale(locale.LC_ALL, 'en_US.utf-8') 
s = locale.currency(value, grouping=True)   # $123,456,789.00
locale.setlocale(locale.LC_ALL, 'en_US')    # WHY? locale.Error: unsupported locale setting
s = locale.currency(value, grouping=True)
比方说,我想将数字格式化为其他货币de_DE.我遇到了这个问题,locale.Error: unsupported locale setting因为语言环境de_DE不在列表中locale -a.
locale.setlocale(locale.LC_ALL, 'de_DE')        # locale.Error: unsupported locale setting
s = locale.currency(value, grouping=True)
一种解决方案是将此区域设置添加到我的计算机.有没有更好的办法?
我正在制作一个从字符串中获取货币并将其转换为其他货币的程序。例如,如果字符串是'the car cost me $13,250'我需要获取$和13250。我已经有了这个正则表达式(?:\£|\$|\€)(?:.{1,}),但是很有可能字符串可能有多个价格,所有价格都使用不同的货币。这是我不知道如何有效地做的事情。
我需要知道的是如何从字符串中提取所有价格。我认为即使正则表达式只是返回类似的东西['$12,250,000','£14,500,123','£120.25']也没关系,因为我可以使用这样的东西来获取数字:
prices = ['$12,250','£14,500','£120']
for value in prices:
    value.replace(',','')
和这样的事情来获得货币:
for c in prices:
     currency = c[0]
还有一个问题,价格可能不是整数,可能是$12.54. 关于如何获得初始价格清单的任何帮助都会很棒。
我对python非常陌生,我想将字符串$ 45,000,000.00转换为浮点数。
我通过切片字符串然后将它们添加在一起以非常愚蠢的方式进行此操作...
test_data1 = "$45,300.000"
test_data1_1 = test_data1[1:3]
test_data1_2 = test_data1[4:7]
test_data1_3 = test_data1_1 + test_data1_2
c = float(test_data1_3)
因为在这种情况下,我能够获得45300作为所需的int结果,但是,如果我有类似$ 23,456.78的内容,那我将无法以这种愚蠢的方式进行转换。...所以还有更多的pythonic做到这一点的方法?非常感谢!