我有很多发票,我发送给客户端,底部是这个字符串:
Total: 1,000.00
或者无论金额多少。有些是2个数字,大约5个数字+小数部分。
事实上,数字的格式与所有发票不一致。有时它的1.000,00
会继续切换点和昏迷。
所以使用grep,awk和sed,我只能从所有发票中获得金额部分,而没有美元符号以便将它们总计为总计。但是,点和昏迷切换显然会混淆python。
所以在python中(也可能在sed中),我希望将第三个字符从右边转换为点然后从那里开始,它找到的每四个字符,将其转换为昏迷。
换句话说,它必须能够将右边三组中的数字分开,在它们之间添加一个彗差,除了最右边的第一组,这是由一个点分隔的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"