【问题标题】:How do I compress an input into a txt file?如何将输入压缩到 txt 文件中?
【发布时间】:2016-01-09 08:27:25
【问题描述】:

我一直在努力寻找一种将用户输入压缩到 .txt 文件中的方法。我需要将用户输入压缩到 txt 文件中,并且能够以原始格式和大小写重新打开它。 我目前的代码是:

sentence = "ASK NOT WHAT YOUR COUNTRY CAN DO FOR YOU ASK WHAT CAN YOU DO FOR YOUR COUNTRY"
listSentence = sentence.split(" ")
d = {}
i = 0
values = []
for i, word in enumerate(sentence.split(" ")):
    if not word in d:
        d[word] = (i+1)
     values += [d[word]]
print(values)
file = open("listofwords.txt","w")
file.write(str(values))
file.close()

此代码只是为句子中的单词赋值,替换重复的单词并将句子写入文件。

【问题讨论】:

  • 这句话是您要压缩的内容的总和吗?
  • 如果您正在创建自己的压缩算法,您可能需要了解霍夫曼代码。
  • 您可能还想阅读 Python 序列化,这也可能适用 (tinyurl.com/z62hqxx)。

标签: python python-3.x


【解决方案1】:

查看zlib:

sentence = "ASK NOT WHAT YOUR COUNTRY CAN DO FOR YOU ASK WHAT CAN YOU DO FOR YOUR COUNTRY"
com = zlib.compress(sentence)
with open("listofwords.txt", "wb") as myfile:
    myfile.write(com)

或者解压:

with open("listofwords.txt", "rb") as myfile:
    com = myfile.read()
sentence = zlib.decompress(com)

【讨论】:

  • 谢谢,我会测试一下!
  • zlib 对于这样的短句并不总是有帮助。这个有一些重复,所以是的,它会起作用。它通常适用于较大的块。
  • @wolfsgang 它没有在文档中说什么,但是你说得对,我没有找到任何更好的库
  • @wolfsgang,我认为不需要压缩“短”句子。压缩适用于大文件。大到足以在统计上适应一些压缩
  • @wolfsgang 是的,我知道这个,但也许有很多这样的字符串他想压缩它们
【解决方案2】:

感谢所有帮助,感谢 Arman 的回答。我也做了更多的环顾四周,我发现 gzip 也是一个很好的方法。我已经改变了程序,所以它可以有两个输入。

sentences = input("Enter the text you want to compress: ")
name = input("Please enter your desired file name: ")
with gzip.open(filename + ".gz", "wt") as outfile:
     outfile.write(plaintext)

【讨论】:

    猜你喜欢
    • 2018-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多