对于大学,我正在研究压缩技术。我试图执行的一项实验是用一个字符替换某些威尔士语字母(有向图)。
我认为用一个字符替换两个字符会减小文件大小(无论多少),或者最坏的情况是保持文件大小不变。我已经制作了一个Python脚本来实现这一点,但实际上它增加了文件大小。我测试过的原始文件是~74,400KB,输出程序是~74,700KB。
这是我的Python代码:
replacements = {
'ch':'ƒ',
'Ch':'†',
'CH':'‡',
'dd':'Œ',
'Dd':'•',
'DD':'œ',
'ff':'¤',
'Ff':'¦',
'FF':'§',
'ng':'±',
'Ng':'µ',
'NG':'¶',
'll':'º',
'Ll':'¿',
'LL':'Æ',
'ph':'Ç',
'Ph':'Ð',
'PH':'×',
'rh':'Ø',
'Rh':'Þ',
'RH':'ß',
'th':'æ',
'Th':'ç',
'TH':'ð',
}
print("Input file location: ")
inLoc = input("> ")
print("Output file location: ")
outLoc = input("> ")
with open(inLoc, "r",encoding="Latin-1") as infile, open(outLoc, "w", encoding="utf-8") as outfile:
for line in infile:
for src, target in replacements.items():
line = line.replace(src, target)
outfile.write(line)
当我在一个非常小的文本文件上测试它几行时,我查看了输出,它是预期的。
INPUT.TXT:
Lle wyt ti heddiw?
Ddoe es i at gogledd Nghymru.
Output.txt的:
¿e wyt ti heŒiw?
•oe es i at gogleŒ µhymru.
有人可以解释发生了什么吗?
答案 0 :(得分:7)
您正在更改文件的编码。 latin-1每个字符总是1个字节,但utf-8不是,所以你的一些特殊字符用多个字节编码,导致大小增加。
答案 1 :(得分:0)
“”UTF-8对任何ASCII字符使用一个字节,所有ASCII字符在UTF-8和ASCII编码中都具有相同的代码值,对于其他字符最多包含四个字节。“” - https://en.wikipedia.org/wiki/Unicode