如果有人能帮我就好了。你知道吗
我有这样的文本文件:
#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)
或者修改脚本,使其舍入数字而不是乘法,但没有成功,我有语法错误等。你知道吗
如果有人能改进我的脚本,使其舍入结果或给我另一个脚本,将舍入我的结果,这将是一种好意。你知道吗
我不想学编程我只是在寻找解决方案。你知道吗
谢谢你。你知道吗
使用以下固定脚本:
参见regex demo。详情:
(?<=#[A-Z])
-一个正的lookback,它匹配紧跟在#
前面的位置,然后是任何大写ASCII字母(改为[A-D]
,只匹配A
、B
、C
或D
)\d+
-1+位(?:,\d+)?
-匹配的可选子字符串,
-逗号\d+
-1个或更多数字。你知道吗结果:
注意事项
match.group(0).replace(',', '.')
用点替换逗号以简化计算float(...)*100.0/655.957
-找到的数字被转换为float,乘以100,再除以655.957"{0:.2f}".format(...)
-格式化浮点舍入结果.replace(".",",")
-将十进制分隔符还原为,
。你知道吗相关问题 更多 >
编程相关推荐