gpt4 book ai didi

python - 使用Python脚本在记事本中进行算术运算

转载 作者:太空宇宙 更新时间:2023-11-03 20:54:55 26 4
gpt4 key购买 nike

有一个这种类型的数据库。

数据库.ini:

[1 StatsObject]
InfoStat=1

[2 StatsObject]
InfoStat=2

etc.

InfoStat 值需要乘以特定的修饰符。

我使用 Notepad++ 的Python脚本

import re

FixedStat = 0
StatMod = 20
Result = 0
FixedStatStr = ""

content = editor.getText()
for row, line in enumerate(content.split('\n')):
for m in re.finditer(r'InfoStat=[0-9]+', line):
if(int(m.group(0).split('=').pop()) > 0):
FixedStat = int(m.group(0).split('=').pop())
Result = FixedStat * StatMod
FixedStatStr = 'InfoStat=' + str(Result)
content = re.sub(m.group(0), FixedStatStr, content)
editor.setText(content)

预期结果:

[1 StatsObject]
InfoStat=20

[2 StatsObject]
InfoStat=40

实际结果:

[1 StatsObject]
InfoStat=400

[2 StatsObject]
InfoStat=40

我想在将1转换成20之后,在将 2 转换为 40 期间,20也改变,因为:

m.group(0) == 'InfoStat = 2'

我使用

re.sub

对于所有文本

请告诉我如何更改特定行中 InfoStat 的值,而不影响其他行。

最佳答案

无需评论您通过特定程序驱动此操作的努力,通过使用标准库 configparser 模块可以大大清理数据的读取。这是一个简化版本:

import configparser

StatMod = 20

config = configparser.ConfigParser()
config.read('Database.ini')

for section in config.sections():
for k, v in config[section].items():
if 'infostat' in k: # configparses squashes case
print(f"[{section}]")
print(f"InfoStat={int(v) * StatMod}")

关于python - 使用Python脚本在记事本中进行算术运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56082222/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com