如何使用python或sed格式化美国货币字符串

时间:2015-09-09 16:08:33

标签: bash shell python-2.7 sed scripting

我有很多发票,我发送给客户端,底部是这个字符串: Total: 1,000.00 或者无论金额多少。有些是2个数字,大约5个数字+小数部分。

事实上,数字的格式与所有发票不一致。有时它的1.000,00会继续切换点和昏迷。

所以使用grep,awk和sed,我只能从所有发票中获得金额部分,而没有美元符号以便将它们总计为总计。但是,点和昏迷切换显然会混淆python。

所以在python中(也可能在sed中),我希望将第三个字符从右边转换为点然后从那里开始,它找到的每四个字符,将其转换为昏迷。

换句话说,它必须能够将右边三组中的数字分开,在它们之间添加一个彗差,除了最右边的第一组,这是由一个点分隔的2位数

希望足够清楚......

2 个答案:

答案 0 :(得分:1)

试试这个:

yourstring = yourstring[:(len(yourstring)-3)].replace(".",",") + "." + yourstring[-2:]

我在python上试过这个,我认为这很有用。

答案 1 :(得分:0)

嗯,我发现处理这个问题的最简单方法是使用一些sed,一些bash和最终打印printf,这样我们就可以使用"%'.2f"轻松进行货币格式化了(注意'字符,必须填写):

# Get rid of every character that is not a digit
totals=$( echo "$totals" | sed 's/[^0-9]*//g' )

# Sum up the amounts
sum=0
for n in $totals; do
    sum=$(($sum+$n))
done

# Put back the comas at each thousand, the dot at decimals and the $ sign in
sansdec=(${#sum}-2)
sum="${sum:0:$sansdec}.${sum: -2}"
printf "%s" "\$"
printf "%'.2f\n" "$sum"