例如,我有包含这些行的txt文件,
chicken
chicken
duck
duck
duck
parrot
parrot
chicken
chicken
chicken我如何逐行读取它,将鸡(2行)拆分为1.txt,鸭子(3行)到2.txt,鹦鹉(2行)到3.txt,最后一只鸡(3行)出现在一个4.txt上?
我在这之前就知道了,
count = 0
with open("test.txt") as rl:
for num, line in enumerate (rl, 1):
s = list(line)
if "chicken" in line:
count += 1
finaljoin = "".join(s)
print(count)
with open("chicken.txt", 'a+') as f:
f.write(finaljoin)但是我上面的解决方案只是把整只鸡(总共5只)放到一个文件中。实际的计划是将前两行抓取到txt文件,最后两行取到另一个txt文件。因为它被另一种动物割裂了。
发布于 2018-05-15 17:13:40
你可以试试:
count = 0
with open("test.txt") as readFile:
previous_line = ""
archive_name = ""
for line in readFile:
if line != previous_line:
previous_line = line
count += 1
archive_name = str(count)+".txt"
with open(archive_name, 'a+') as f:
f.write(line)这将节省1.txt的“鸡鸡”、2.ttxt的“鸭鸭”、3.ttxt的“鹦鹉鹦鹉”和4.txt的“鸡鸡”。
发布于 2018-05-15 17:13:43
其实你还没弄明白。您没有拆分条款;您所做的只是搜索“小鸡”,无论它出现在哪里,然后将这些重新构造的行转储到"chicken.txt“文件中。你没有为任何其他动物做任何准备,也没有试图在逻辑上找到这些断裂。此外,这里还有很多多余的代码,比如反复打开输出文件,生成从未使用过的num。
如果需要的话,在纸上画出你的基本逻辑。你错过的关键一步是检查先前的动物和当前的动物。这是类似的事情
previous = None
with open("test.txt") as zoo:
for animal in zoo:
if animal == previous:
# Process same animal
else:
# Process new animal
previous = animal # remember animal for next iteration你能从那里拿下来吗?对于num,枚举中的行(rl,1):
https://stackoverflow.com/questions/50355741
复制相似问题