WarmInWinter 发表于 2022-6-10 15:42:00

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

本帖最后由 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
        }
}


新源 发表于 2022-6-10 16:03:12

class不是C语言的代码吗
这个问题是不发错了

WarmInWinter 发表于 2022-6-10 16:56:47

新源 发表于 2022-6-10 16:03
class不是C语言的代码吗
这个问题是不发错了

造成误导啦,就是没有含义的字符。我换一个

tiangtian 发表于 2022-6-10 18:27:50

正则匹配不行吗?

WarmInWinter 发表于 2022-6-10 22:12:38

tiangtian 发表于 2022-6-10 18:27
正则匹配不行吗?

请问多行也可以正则匹配?
就是两个文件中column_list数目相同,但是column_list元素是多行的

临时号 发表于 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 = a.find("column_list",begin+1)
end = a.find("}",begin)
a_text2 = a

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 = b.find("column_list",begin+1)
end = b.find("}",begin)
b_text2 = b

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()

新源 发表于 2022-6-11 11:19:19

新源 发表于 2022-6-10 16:03
class不是C语言的代码吗
这个问题是不发错了

嗯嗯,这个格式转不过来,不好检查

tiangtian 发表于 2022-6-20 17:06:36

WarmInWinter 发表于 2022-6-10 22:12
请问多行也可以正则匹配?
就是两个文件中column_list数目相同,但是column_list元素是多行的

正则公式:column_list[\s\S]+?}
这样可以匹配一个column_list吧,大概是这么写的。匹配column_list至后面第一个“}"之间的内容
页: [1]
查看完整版本: 将A文件中部分内容替换成B文件的对应内容