Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.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 - Fatal编程技术网

Python 将字符串替换为多行,如果没有,则替换为空

Python 将字符串替换为多行,如果没有,则替换为空,python,Python,我有几行代码,应该用包含多行的变量替换字符串,如果变量不包含任何内容,那么就用空白替换字符串 包含应替换字符串的当前文件如下所示 "resources": [ stringtobereplaced ] 我的当前代码替换了此代码,如下所示 with open('filepaths', "r+") as f: for _ in range(1): next(f) for lines in f:

我有几行代码,应该用包含多行的变量替换字符串,如果变量不包含任何内容,那么就用空白替换字符串

包含应替换字符串的当前文件如下所示

"resources": [
        stringtobereplaced
    ]
我的当前代码替换了此代码,如下所示

with open('filepaths', "r+") as f:
            for _ in range(1):
                next(f)
            for lines in f:
                resourceslist = lines
                print(resourceslist)
        os.chdir(base_dir)
        with open(unique_filename) as f:
            newText=f.read().replace('stringtobereplaced', resourceslist)
        with open(unique_filename, "w") as f:
            f.write(newText)
变量resourceslist中包含以下内容

"/home/django/copypaste/cleanup/var/media/admin/9514a8e4-8ad8-4917-a162-6d618b6616d3/splash279/lib/props/barbershop_pole.blend",
"/home/django/copypaste/cleanup/var/media/admin/9514a8e4-8ad8-4917-a162-6d618b6616d3/splash279/lib/props/hairdryer.blend",
"/home/django/copypaste/cleanup/var/media/admin/9514a8e4-8ad8-4917-a162-6d618b6616d3/splash279/lib/chars/pigeon.blend",
"/home/django/copypaste/cleanup/var/media/admin/9514a8e4-8ad8-4917-a162-6d618b6616d3/splash279/lib/chars/agent.blend",
"/home/django/copypaste/cleanup/var/media/admin/9514a8e4-8ad8-4917-a162-6d618b6616d3/splash279/lib/nodes/nodes_shaders.blend",
"/home/django/copypaste/cleanup/var/media/admin/9514a8e4-8ad8-4917-a162-6d618b6616d3/splash279/tools/camera_rig.blend",
但当我用变量resourceslist替换文件中的字符串时,它只输出一行。如果变量中没有任何内容,如何将它们全部添加到文件中,或将其替换为空白

电流输出示例:

"resources": [
    "/home/django/copypaste/cleanup/var/media/admin/089a4bd9-a618-41bd-a09b-f3616c773199/splash279/tools/camera_rig.blend",
]

在文件对象上迭代会产生文件的每一行,因此循环变量
lines
在任何给定时间都包含文件的一行。每次通过循环时,您都会用当前值
覆盖
资源列表
的内容,因此最后它包含文件的最后一行


如果缩进不重要,您可以只设置
resourceslist=f.read()
,而不设置循环。如果希望资源文件的每一行缩进的方式与StringToBeReplace相同,则必须对模板文件进行更复杂的处理(可能需要匹配一个正则表达式,如“^(?P*)StringToBeReplace”,并在每个资源行前面加上匹配对象的“prefix”组)。

请修复缩进,这对于Python来说至关重要。有关代码格式帮助,请参阅。范围(1)中的
有什么意义:
?这是一个1-迭代循环,您只需执行主体而无需循环。f.read()实际起作用。如果没有,只需要找到一种替换为空白的方法。非常感谢您的澄清@如果变量是一个空字符串,那么replace将只删除匹配的位(即,用空字符串替换它),因此该部分应该已经由您发布的代码完成。