Python:删除重复字符,但字节中的文件大小仍在增加

问题描述:

我已经创建了一个模块,应根据字符重复的次数使用特定替换来删除重复字符。例如,如果使用“α”重复4次,将“一”和“¤”这两个值都等于1个字节。我遇到的问题是当文件尺寸变至超过30KB左右,当我完成运行模块它有一些如何字节大小增加。我已经尝试了一些字计数程序,显然它增加了更多的字符我只是一直没能解决我的代码。我尝试了几种方法,希望得到一些关于如何添加字节的帮助或想法。Python:删除重复字符,但字节中的文件大小仍在增加

from itertools import groupby 

with open("LICENSE.txt","r", encoding='utf-8') as rf, open('TESTINGOnline.txt','w', encoding='utf-8') as wf: 
s = rf.read() 
ret = '' 
for k, v in groupby(s): 
    x = 'a' 
    chunk = list(v) 
    cnt = len(chunk) 

    if k == x and cnt <= 1: 
     el = 'ª'.rstrip('\n') 
    elif k == x and cnt == 2: 
     el = '¨'.rstrip('\n') 
    elif k == x and cnt == 3: 
     el = '­'.rstrip('\n') 
    elif k == x and cnt == 4: 
     el = '¤'.rstrip('\n') 
    elif k == x and cnt == 5: 
     el = '¥'.rstrip('\n') 

    else: 
     el = ''.join(chunk).rstrip('\n') 
    ret += el 
wf.write(ret.rstrip('\n')) 

怎么弄,文件大小增长的解释很简单:

print(len(bytes("¥ª¤¨", 'utf-8'))) 

8 

你假设你用另一个字节替换一个字节错误。您正在使用一个UTF-8字符替换一个UTF-8代码为一个字节长的UTF-8字符,而UTF-8代码为两个字节长。

无需修复您的代码 - juxt修正你的假设:)

也许检查出我的回答以下两个问题可以帮助你更好地了解怎样的一个人物和什么是一个字节?

Converting UTF-8 (in literal) to Umlaute

In Python 3, how can I convert ascii to string, *without encoding/decoding*

+0

你先生是天才,拿出了UTF-8编码和繁荣字节下楼,戴的帽子。 – LetsChangeTheWorld