在python中如何替换特定单词下的值?
我有此代码在值之间插入,并返回特定X和Y的Z值。我正在尝试打开另一个文件(在python中如何替换特定单词下的值?,python,python-3.x,replace,find,python-requests,Python,Python 3.x,Replace,Find,Python Requests,我有此代码在值之间插入,并返回特定X和Y的Z值。我正在尝试打开另一个文件(world.txt)并将该值粘贴到特定名称下Nz 文件的组织方式是 Nx 5 Ny 0.1 Nz 0.8 但是我得到的是givemeZ(0.5,0.04)而不是0.78 请你提出一些解决办法好吗 import numpy as np from scipy import interpolate from scipy.interpolate import griddata import itertools from scip
world.txt
)并将该值粘贴到特定名称下Nz
文件的组织方式是
Nx
5
Ny
0.1
Nz
0.8
但是我得到的是givemeZ(0.5,0.04)
而不是0.78
请你提出一些解决办法好吗
import numpy as np
from scipy import interpolate
from scipy.interpolate import griddata
import itertools
from scipy.optimize import curve_fit
xx= 0.15, 0.3, 0.45, 0.5, 0.55
yy= 0.01, 0.02, 0.03, 0.04, 0.05
zz= 0.75, 0.76, 0.77, 0.78, 0.79
tck = interpolate.bisplrep(xx, yy, zz, s=0)
def givemeZ(X,Y):
return interpolate.bisplev(X,Y,tck)
## to replace the value
with open('world.txt', 'r') as file :
filedata = file.read()
# Replace the target string
filedata = filedata.replace('Nz', 'givemeZ(0.5,0.01)')
# Write the file out again
with open('world.txt', 'w') as file:
file.write(filedata)
嗯,是的。传递
文件数据。替换字符串文本
。您应该将实际值传递给它,转换为字符串,如
filedata = filedata.replace('Nz', str(givemeZ(0.5,0.01)))
根据具体情况,您可能不需要调用str()
就可以离开-我不确定replace
是否能够顺利处理可转换为str
的非str参数。不过,自己显式地进行转换应该是可行的
要替换下一行,您需要一些在循环中运行的逻辑-我认为您不能单纯通过replace
来完成。你可以这样做:
new_lines = []
previous_line = ''
with open('world.txt', mode = 'r') as f:
for current_line in f:
if previous_line == 'Nz':
new_lines.append(str(givemeZ(0.5,0.01)))
else:
new_lines.append(current_line)
previous_line = current_line
new_text = '\n'.join(new_lines)
然后,您可以将新文本写回world.txt
——请注意,您在这里执行的操作,即使是在原始代码中,也不会修改实际文件,只修改内存中的Python字符串。您的代码按预期工作,行
filedata = filedata.replace('Nz', 'givemeZ(0.5,0.01)')
将字符串Nz
替换为字符串givemeZ(0.5,0.01)
您希望使用返回值givemeZ(0.5,0.01)
重放Nz
。使用以下命令:
filedata = filedata.replace('Nz', str(givemeZ(0.5, 0.01)))
这将获取givemeZ()
的返回值,并将该值转换为字符串。您的代码在tck=interpolate.bisplrep(xx,yy,zz,s=0)
:TypeError:m>=(kx+1)(ky+1)处产生错误-这个示例对您有效吗?只是想知道数字…nx5
?是不是0.5
和Ny
可能0.01
。我们这里说的是插值,不是外推,对吗?此外,您是否自己生成world.txt?如果是这样,我强烈建议采用不同的结构,例如#Nx Ny Nz\n 0.5 0.01 0.78\n\n或至少Nx 0.5\n Ny 0.01\n Nz 0.78\n…\n这将使您的生活更轻松。非常感谢您的帮助,但问题是如何更改Nz下的值而不是Nz本身???可能最好使用配置文件格式,如感谢您的帮助,但问题是如何改变新西兰而不是新西兰本身的价值???@Princeszena我已经添加了一个如何做到这一点的例子。@Princeszena为什么?我提供的代码执行完全相同的操作,无需替换。要使用replace
,您需要关注Nz
下面的值,在您的示例中,您不需要关注该值。@Princeszena它不会更改什么值?正如我在回答中所说,如果你想更改磁盘上的文件,你需要重写它。很抱歉,它也不会重写,我正在尝试,代码运行时没有错误,但不会更改文件中的任何内容。你精通Python,我希望你能帮助我