首页 > 解决方案 > 如何拆分重复所有相同模式行n次的文本并在python中创建n个不同的文本文件?

问题描述

我有一个重复相同线条图案的文本。像那样:


 "User= Name1; 
  Time= HH:MM; 
  Note= example.
  User= Name2; 
  Time= HH:MM; 
  Note= example2.
  ......"   

这种模式重复 500 次。

如何为每个“用户”创建 500 个不同的文本文件?

标签: python

解决方案


看起来每个段有 7 行长,因此您可以将数据读入一个列表,使用 zip 和 iter 将其分解为一个列表列表,每个列表有 7 个元素长。然后,您可以将其中的每一个写入文件。

如果您对 zip(iter) 的工作原理感到好奇,请查看此处的详细信息

with open('users.txt') as f:
    data = f.readlines()
       
for c, file in  enumerate(zip(*[iter(data)]*7)):
    with open(f'file_{c}.txt', 'w') as f:
        f.writelines(file)

或者,如果您想要用户的文件名

with open('users.txt') as f:
    data = f.readlines()
       
for file in zip(*[iter(data)]*7):
    name = file[0].split('=')[-1].split(';')[0].strip()
    print(name)
    with open(f'file_{name}.txt', 'w') as f:
        f.writelines(file)

推荐阅读