我需要帮助在文本文件中使用notepad++和python脚本插件对货币转换的数字进行舍入

2024-06-26 14:05:55 发布

您现在位置:Python中文网/ 问答频道 /正文

如果有人能帮我就好了。你知道吗

我有这样的文本文件:

#Zsdfgsdqfq
#A100,56
#Zjtdhsdfg
#Zadsdf
#B12,53
#Zdwfgs
#C10,00
#Zdsfgdfg
#D40,00

在文件#A,#B,#C和D#是我需要除以6.55957的数字 这就是我想要的结果:

#A15,33
#Zjtdhsdfg
#Zadsdf
#B1,91
#Zdwfgs
#C1,52
#Zdsfgdfg
#D6,10

我发现这个讨论很有帮助:Notepad ++ How to multiply numbers from mass replace?

所以我在Notepad++中使用了Python脚本插件

我不知道如何管理十进制数和用于十进制分隔符的逗号。你知道吗

我发现我可以删除所有comas,然后将结果除以100,我将能够搜索并替换结果文件中的comas替换点。你知道吗

以下是我在链接讨论中读到的脚本:

def multiply_number_in_context(match):
    return "{0}{1}".format(match.group(1), str(int(match.group(2))/655.957)) # thank you Wiktor Stribiżew to explain me how to get rid of this : ,''

editor.rereplace(r'(\#A)(\d+)', multiply_number_in_context)
editor.rereplace(r'(\#B)(\d+)', multiply_number_in_context)
editor.rereplace(r'(\#C)(\d+)', multiply_number_in_context)
editor.rereplace(r'(\#D)(\d+)', multiply_number_in_context)

结果如下:

#Zsdfgsdqfq
#A15.33027317339399
#Zjtdhsdfg
#Zadsdf
#B1.910186185984752
#Zdwfgs
#C1.524490172374104
#Zdsfgdfg
#D6.097960689496415

它工作,但现在我需要四舍五入的结果与两位小数。#A应为15.33,#D应为6.10

它似乎是使用圆(x,2)的东西,但我不知道如何使这项工作。你知道吗

我试着用这样的东西修改我的脚本:

return "{0}{1}{2}".format(match.group(1), str(round(int(match.group(2))/655.957), '')), 2) 

或者修改脚本,使其舍入数字而不是乘法,但没有成功,我有语法错误等。你知道吗

如果有人能改进我的脚本,使其舍入结果或给我另一个脚本,将舍入我的结果,这将是一种好意。你知道吗

我不想学编程我只是在寻找解决方案。你知道吗

谢谢你。你知道吗


Tags: toin脚本numbermatchcontextgroupmultiply
1条回答
网友
1楼 · 发布于 2024-06-26 14:05:55

使用以下固定脚本:

def multiply_number_in_context(match):
    return "{0:.2f}".format(float(match.group(0).replace(',', '.'))*100.0/655.957).replace(".",",")

editor.rereplace(r'(?<=#[A-Z])\d+(?:,\d+)?', multiply_number_in_context)

参见regex demo。详情:

  • (?<=#[A-Z])-一个正的lookback,它匹配紧跟在#前面的位置,然后是任何大写ASCII字母(改为[A-D],只匹配ABCD
  • \d+-1+位
  • (?:,\d+)?-匹配的可选子字符串
    • ,-逗号
    • \d+-1个或更多数字。你知道吗

结果:

enter image description here

注意事项

  • match.group(0).replace(',', '.')用点替换逗号以简化计算
  • float(...)*100.0/655.957-找到的数字被转换为float,乘以100,再除以655.957
  • "{0:.2f}".format(...)-格式化浮点舍入结果
  • .replace(".",",")-将十进制分隔符还原为,。你知道吗

相关问题 更多 >