[英]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字符。
無需修正您的代碼-並列修正您的假設:)
也許檢查一下我對以下兩個問題的回答,可以幫助您更好地理解什么字符和什么字節?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.