繁体   English   中英

如何用另一个文件中的文本替换一个文件中的文本?

[英]How to replace text in one file with text from another file?

我正在尝试将一个文件中的文本放入另一个也包含文本的文件中。 例子:

文件 1 包含:

@WORLD

文件 2 包含:

HELLO:LEARNING

我想将FILE1的内容插入FILE2得到:

HELLO@WORLD:LEARNING

或多或少我有代码:

fname = input("Put your file: ")

if fname == "combos.txt":
    try:
        f = open(fname) #OPEN THE FILE "COMBOS.TXT"
        delimiter = ":"
        with open("combos.txt", "r", encoding='UTF-8')as f: #WITH THE FILE "COMBOS.TXT" OPENED AS VARIABLE F
            data = [f"{x}{delimiter}{y}" for x,y in [tuple(i.strip().split(delimiter)) for i in f.readlines()]] #

            with open("lowercase - combos.txt", "w+", encoding='UTF-8')as f:
                f.write("\n".join(data))
                
            input("Your file was edited successfully! Press enter to continue...")
        
        if platform.system() == "Windows":
            p = subprocess.call(["python", "start.py"])
    except:
        print("--Something went wrong while trying to load your file--")

问题出在这部分:

data = [f"{x}{delimiter}{y}" for x,y in [tuple(i.strip().split(delimiter)) for i in f.readlines()]] #

xy是文件 2 中的文本: HELLO (X): LEARNING (Y)

我想将FILE 1 --> @WORLD中的文本添加到 (X) 中的 FILE 2:

HELLO@WORLD (X): LEARNING (Y)

我不知道如何修复它,我想那是编辑变量X 我做了不同的测试(创建一个变量来打开另一个文件,或者把write() function。我没用,我不知道是否或多或少是这样的,但我做不到):

data = [f"{x}{delimiter}{y}"

IIUC,您希望创建的新数据格式如下:

{X from FILE2}{FILE 1}:{Y from FILE2}

目前在您的代码中,我看到您只在一个文件上循环。 您应该使用zip function 同时循环处理这两个文件。然后简单地构造您的数据:

with open(FILE1) as file1, open(FILE2) as file2:
    data = []
    for line1, line2 in zip(file1, file2):
        x, y = line2.split(':')
        data.append(f"{x}{line1.strip()}:{y}")

with open(FILE2, 'w') as file2:
    file2.writelines(data)

请注意,对于大多数文件操作,您通常不需要使用readlines()/read()并在 memory 中创建不必要的列表/字符串。 您可以直接在文件的行上就地循环( for line in file ),因为文件是 Python 中的迭代器。

不确定你想要什么作为这个程序的过程。 最后我确实得出了符合您期望的结果。 不提供验证,这取决于您。

# file1.txt = @WORLD
# file2.txt = HELLO:LEARNING
# file2.txt after run = HELLO@WORLD:LEARNING

def insert_file_in_file(f1_path, f2_path, placed_before = " "):
    with open(f1_path, "r") as f1:
        f1_text = f1.read()
    with open(f2_path, "r") as f2:
        f2_text = f2.read()

    with open(f2_path, "w") as f2:
        string_list = f2_text.split(placed_before)
        f2.write((f1_text + placed_before).join(string_list))

insert_file_in_file("file1.txt", "file2.txt", ":")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM