在python中为两个文本文件循环

2024-05-15 21:22:16 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我第一次来这里,希望能得到你的帮助。 我是python新手,需要你的帮助

我有两个.txt文件 这里有一个例子 file1.txt

customer1.com
customer2.com
customer3.com
customer4.com
customer5.com
customer6.com
customer7.com
customer8.com
customer9.com

file2.txt

service1
service2
service3

我想在file1.txt=>;上循环file2.txt; 比如下面的例子

customer1.com/service1
customer1.com/service2  
customer1.com/service3

customer2.com/service1
customer2.com/service2  
customer2.com/service3

customer3.com/service1
customer3.com/service2  
customer3.com/service3

然后继续,直到完成file1.txt

我还需要做一个假设 例如,假设客户编号3有服务编号2(我的意思是找到文件)

customer3.com/service2[找到服务]

我需要customer3停止查找服务的循环,并将输出(customer3.com/service2)保存在名为file3.txt的新文件中 循环继续与其他客户进行,每个客户都找到了服务,输出保存在file3.txt中

我希望你明白我的意思。 谢谢


Tags: 文件txtcom客户servicefile1编号例子
3条回答

您可以使用itertools.product从每个文件中获取行的笛卡尔积,以获取每个URL组合:

from itertools import product

with open("file1.txt") as f1, open("file2.txt") as f2, open(
    "file3.txt", mode="w"
) as out:
    for x, y in product(f1, f2):
        out.write("%s/%s\n" % (x.strip(), y.strip()))

file3.txt

customer1.com/service1
customer1.com/service2
customer1.com/service3
customer2.com/service1
customer2.com/service2
customer2.com/service3
customer3.com/service1
customer3.com/service2
...

循环任务很简单。您需要读取每个文件并将数据另存为列表。然后按照循环顺序编写一个文件。参见示例。但我不理解黑线和服务找到的逻辑。是一般的。具体点

例如:

list1, list2 = [], []

with open("file1.txt", "r") as f1:
    line = f1.readline()
    while line:
        line = line.strip()
        list1.append(line)
        line = f1.readline()
with open("file2.txt", "r") as f2:
    line = f2.readline()
    while line:
        line = line.strip()
        list2.append(line)
        line = f2.readline()
with open("file3.txt", "w") as f3:
    for i in list1:
        for j in list2:
            f3.write(f"{i}/{j}\n")
        f3.write("\n") # just for that black line

试着一行一行地阅读,并使用相应的方法

file1 = open('file1.txt', 'r')
file2 = open('file2.txt', 'r')
lines1 = file1.readlines()
lines2 = file2.readlines()
for line_from_1 in lines1:
    for line_from_2 in lines2:
        print(line_from_1 + '/' + line_from_2)

相关问题 更多 >