【发布时间】:2016-03-14 16:00:01
【问题描述】:
我希望拆分 2 个文本文件并将它们组合起来:
所以第一个文件称为“Names.txt”,是一个名称列表。它非常大,因此手动将名称放入下一部分是不行的:
Chloe
Megan
Harry
etc...
第二个文件名为“Attributes.txt”,是一个由 $$$$ 分隔的属性集列表:
attribute1
attribute2
attribute3
$$$$
attribute1
attribute2
etc...
一组属性,每个属性都与第一个文件中的名称相关。但是我不知道每个集合中有多少属性,因为它是随机的。
我想从第一个文件中取出名字,从第二个文件中取出第一组属性并将它们写入一个新文件:
Chloe
attribute1
attribute2
attribute3
然后循环它,以便它使用第二个名称并设置等等......
到目前为止,我有这个代码:
import os
input_file1 = open('Names.txt', 'r')
input_file2 = open('Attributes.txt', 'r')
lines1 = input_file1.readlines()
def group_by_person(some_source):
buffer = []
for line in (some_source):
if line.startswith("$$$$"):
if buffer: yield buffer
buffer = [line]
else:
buffer.append(line)
yield buffer
i = 0
name1 = lines1[i]
name2 = name1[:-1]
g = 0
while os.path.exists(name2 + '%s.txt' % g):
g += 1
with open(name2 + '%s.txt' % g, 'w') as f:
with input_file2 as source:
for lines2 in group_by_name(source):
f.write(lines2[i])
i += 1
有人可以帮忙吗?
【问题讨论】:
-
欢迎来到 SO。这是一个质量很好的问题!只缺少一件事:运行代码时会发生什么。显然它不会产生所需的输出,否则你不会问,但它会产生错误的输出、崩溃或烧毁吗? :)
-
嗨,我收到一个错误“IndexError: list out of range”。它确实编写了一个具有正确名称但具有第二人属性的新文件,并且它根本不循环。
-
你的错误是什么?如果是崩溃,您通常会获得大量调试信息(例如堆栈跟踪),这些信息对于找出问题所在非常有帮助。
-
按顺序:阅读、拆分、压缩。加入并写出来。查找它们。
-
这不是您正在运行的代码。你有一个名为
group_by_person的函数,但你调用了一个名为group_by_name的函数。请复制并粘贴您的实际代码。谢谢。