0

我有两个文件:file1, file2.

file1我的数据行中,我list1通过跳过空行并将元素设为小写来解析这些数据:

文件1:

dATa02
datA03

dAta04
with open('file1', 'r') as f:
    list1 = [l.lower() for l in (line.strip() for line in f) if l]

结果,我得到了一个数据列表list1[ 'data02', 'data03', 'data04' ]

file2我有一排:if [data] in [ "data01", "data02", "data03" ] {它不断地从if [data] in

文件2:

#somedata
if [data] in [ "data01", "data02", "data03" ] {
#somedate

我正在使用正则表达式来解析数据列表:

import re
with open('/file2', 'r+') as f:
    for l in f:
        l_s = row.strip()
        if 'if [data] in ' in row_s:
            data1 = re.findall('"(.\w+)\"*', l_s)
            print(data1)

结果,我得到了另一个数据列表list2[ 'data01', 'data02', 'data03' ]

得到两个列表后,我进行比较:

added = set(list1) - set(list2) #data04
deleted = set(list2) - set(list1) #data01

问题是:如何替换list2fromfile2list1from file1

4

2 回答 2

0

也许您可以根据file1在file2中生成列表?

文件 2 如下所示:

#somedata
with open('file1', 'r') as f:
    list1 = [l.lower() for l in (line.strip() for line in f) if l]

if [data] in list1 {
#somedate
于 2019-11-25T16:42:55.147 回答
0

通过以下代码解决:

if list1 == list2:
    print("Nothing changed...")
else:
    print("Found changes:")
    added_set = set(list1) - set(list2)
    deleted_set = set(list2) - set(list1)
    if added_set:
        print(f"New env: {added_set}")
    if deleted_set:
        print(f"Old env: {deleted_set}")

    env_new_str = (str(env_new).replace("'", '"'))
    env_prod_str = (str(env_prod).replace("'", '"'))

    try:
        s = open("file2").read()
        s = s.replace(env_prod_str, env_new_str)

        f = open("file2", 'w')
        f.write(s)
        print("Changed...")
    finally:
        f.close()
于 2019-11-26T10:38:47.597 回答