【发布时间】:2016-10-05 05:25:35
【问题描述】:
对于学校作业,我必须编写一个 python 程序来压缩文本并使用压缩文本编写一个新文件,同时保留原始文件。例如,文本“heeeeeeeelllooo”到“he7l4o3”。因此,随后迭代的每个字符都必须被该字符替换,并且必须直接跟在迭代次数之后,除非迭代次数当然是 1。但是,我得到的不是压缩文本“he7l4o3”,而是“hee2ll2oo2”。
我做错了什么?
代码:
inp = open("hello.txt", "r")
out = open("compr.txt", "w")
kar=inp.read(1)
prevkar=''
def iterations(a,b):
while a==b:
re=1
re+=1
b = a
a = inp.read(1)
out.write(b + str(re))
return
def no_iteration(a):
out.write(a)
return
while kar:
if kar==prevkar:
iterations(kar, prevkar)
prevkar=kar
kar=inp.read(1)
else:
no_iteration(kar)
prevkar=kar
kar=inp.read(1)
inp.close()
out.close()
【问题讨论】:
-
好吧,对于
iterations函数中的 while 循环中的初学者,您不断将re重新分配为 1,然后将其递增,使其始终为 2。 -
另外,第一次出现的新字符将由
no_iteration()写入文件,所以如果iterations()also 写入该字符,它会被写入两次。
标签: python python-2.7 compression