Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中如何替换特定单词下的值?_Python_Python 3.x_Replace_Find_Python Requests - Fatal编程技术网

在python中如何替换特定单词下的值?

在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

我有此代码在值之间插入,并返回特定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 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,我希望你能帮助我