簡體   English   中英

Python:刪除重復字符,但文件大小(以字節為單位)仍在增加

[英]Python: Removing Repeating Characters, But File Size In Bytes Is Still Increasing

我創建了一個模塊,該模塊應根據字符重復的次數使用特定的替換項來刪除重復的字符。 例如,如果“ a”重復4次,則將“ a”替換為“¤”,這兩個值均等於1個字節。 我遇到的問題是文件大小超過30KB左右時,當我完成模塊的運行后,它如何增加字節大小。 我嘗試了一些字數統計程序,顯然它添加了更多我無法修復代碼的字符。 我嘗試了幾種方法,並且希望獲得有關如何添加字節的幫助或想法。

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字符。

無需修正您的代碼-並列修正您的假設:)

也許檢查一下我對以下兩個問題的回答,可以幫助您更好地理解什么字符和什么字節?

將UTF-8(按字面值)轉換為Umlaute

在Python 3中,如何在沒有編碼/解碼的情況下將ascii轉換為字符串

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM