鱼C论坛

 找回密码
 立即注册
查看: 1680|回复: 7

将A文件中部分内容替换成B文件的对应内容

[复制链接]
发表于 2022-6-10 15:42:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 WarmInWinter 于 2022-6-10 16:55 编辑

A.txt 内容

Team(A) {

        row:  6
        column: 5

        row_list {
                 A   
                B  
                C
                D
                E               
        }

        column_list {
                zhaoda
                zhangsan
                lisi
                wangwu
                xiaoliu
        }

}

Team(B) {

        row:  6
        column: 5

        row_list {
                 F   
                G  
                H
                I
                J               
        }

        column_list {
                liu
                sun
                chen
                xue
                xiao
        }

}

B.txt 内容

Team(A) {

        row:  6
        column: 5

        row_list {
                 1   
                2  
                3
                4
                5               
        }

        column_list {
                ALLEN
                JIM
                TONY
                Henry
                JAMES
        }

}

Team(B) {

        row:  6
        column: 5

        row_list {
                 6   
                7  
                8
                9
                10               
        }

        column_list {
                Timmy
                Moossy
                Hank
                Mark
                Lee
        }

}

想将A文件中的column_list内容替换成B文件的column_list:
如下效果:

Team(A) {

        row:  6
        column: 5

        row_list {
                 A   
                B  
                C
                D
                E               
        }

        column_list {
                ALLEN
                JIM
                TONY
                Henry
                JAMES
        }

}

Team (B) {

        row:  6
        column: 5

        row_list {
                 F   
                G  
                H
                I
                J               
        }

        column_list {
                Timmy
                Moossy
                Hank
                Mark
                Lee
        }

}


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-6-10 16:03:12 | 显示全部楼层
class不是C语言的代码吗
这个问题是不发错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-6-10 16:56:47 | 显示全部楼层
新源 发表于 2022-6-10 16:03
class不是C语言的代码吗
这个问题是不发错了

造成误导啦,就是没有含义的字符。我换一个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-10 18:27:50 | 显示全部楼层
正则匹配不行吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-6-10 22:12:38 | 显示全部楼层
tiangtian 发表于 2022-6-10 18:27
正则匹配不行吗?


请问多行也可以正则匹配?
就是两个文件中column_list数目相同,但是column_list元素是多行的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-11 00:21:35 | 显示全部楼层
本帖最后由 临时号 于 2022-6-11 00:47 编辑
WarmInWinter 发表于 2022-6-10 22:12
请问多行也可以正则匹配?
就是两个文件中column_list数目相同,但是column_list元素是多行的


你读取文件以后,文件内容对python来说就是字符串,那你可以用字符串查找的方法,先找A.txt的column_list,然后以查找出来的索引作为字符串你的开头索引,再找离开头最近的},用相同的方式找出B.txt的column的索引和离它最近的}的索引,用字符串的替换函数替换掉
当然,这个方法比较复杂
# A.txt
f = open('A.txt','r')
a = f.read()
begin = a.find("column_list")
end = a.find("}",begin)
a_text1 = a[begin:end+1]

begin = a.find("column_list",begin+1)
end = a.find("}",begin)
a_text2 = a[begin:end+1]

f.close()

# B.txt
f = open("B.txt",'r')
b = f.read()
begin = b.find("column_list")
end = b.find("}",begin)
b_text1 = b[begin:end+1]

begin = b.find("column_list",begin+1)
end = b.find("}",begin)
b_text2 = b[begin:end+1]

f.close()

# 替换
a = a.replace(a_text1,b_text1)
a = a.replace(a_text2,b_text2)
f = open('A.txt','w')
f.write(a)
f.close()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-11 11:19:19 | 显示全部楼层
新源 发表于 2022-6-10 16:03
class不是C语言的代码吗
这个问题是不发错了

嗯嗯,这个格式转不过来,不好检查
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-20 17:06:36 | 显示全部楼层
WarmInWinter 发表于 2022-6-10 22:12
请问多行也可以正则匹配?
就是两个文件中column_list数目相同,但是column_list元素是多行的

正则公式:column_list[\s\S]+?}
这样可以匹配一个column_list吧,大概是这么写的。匹配column_list至后面第一个“}"之间的内容
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-17 20:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表