[Python]读取.txt文件并分析

大家好!
我正在对任何.txt文件进行Huffman编码,所以首先我需要分析这个文本文件。我需要读一读,然后再进行分析。
我需要像桌子一样的"退场":
*
字母频率(后一次相同重复多少次)霍夫曼编码(这将在以后出现)
************************
我从以下几个方面开始:

选择 | 换行 | 行号
  1. f = open('test.txt', 'r')    #open test.tx
  2.     for lines in f:
  3.         print lines          #to ensure if all work...
  4.  

有谁可以帮我?

# 回答1

选择 | 换行 | 行号
  1. def countLetters(line, letter):
  2.     ret = 0
  3.     for character in line:
  4.         if character == letter: ret += 1
  5.     return ret
  6.  
  7. for line in open("file.txt"):
  8.     line = line.strip()
  9.     print line
  10.     print "Has", countLetters(line, "a"), "of letter a."
  11.     print "Has", countLetters(line, "e"), "of letter e."
  12.     print "Has", countLetters(line, "i"), "of letter i."
  13.     print "Has", countLetters(line, "o"), "of letter o."
  14.     print "Has", countLetters(line, "u"), "of letter u."
  15.     print "Has", countLetters(line, "y"), "of letter y."
  16.     print
# 回答2


修改肖恩的代码:

选择 | 换行 | 行号
  1. #!/bin/python3
  2.  
  3. def countLetters(line, letter):
  4.    ret = 0
  5.    for character in line:
  6.       if character == letter: ret += 1
  7.    return ret
  8.  
  9. alphabet = 'abcdefghijklmnopqrstuvwxyz'
  10. #you can automate this using ascii codes too
  11.  
  12. for line in open("file.txt",'r'):
  13.    line = line.strip() #remove trailing spaces
  14.    print (line)
  15.    for letter in alphabet:
  16.       print ('Has {0} of letter {1}'.\
  17.       format(str(countLetters(line,letter)),letter))

输出:
Gbfchjwshfcjkwhndfnxh;iquw;qemiziqmeuzngyegbfyewgy bqgzeqzydglndhlqhd;jkjnenjcejnrcjercbvvbdbggngnjmm nmsnvsdmsnfsfcsf>mNmvbmsdbfluaheregnctfbaxzmasqojm wqi;htrugttgp
有3个字母a
有9个字母b
有7个字母c
有7个字母d
有10个字母e
有9个字母f
有12个字母g
有8个字母h
有4个字母I
有9个字母j
有2个字母k
有3个字母l
有11个字母m
有13个字母n
有1个字母o
有1个字母p
有8个字母Q
有4个字母r
有8个字母%s
有4个字母t
有4个字母u
有4个字母v
有5个字母w
有2个字母x
有4个字母y
有5个字母z

# 回答3

选择 | 换行 | 行号
  1. #-------------------------------------------------#
  2. # Set Variables                                   #
  3. #-------------------------------------------------#
  4.  
  5. input = open("file.txt")
  6. whitelist = ('a','b','c','d','e','f','g') # whitelist of letters
  7. letters = {}
  8.  
  9. #-------------------------------------------------#
  10. #  Functions                                      #
  11. #-------------------------------------------------#
  12.  
  13. def count_letter(c):
  14.   if c in letters:
  15.     letters[c] += 1  # if letter in letters add one
  16.   else:
  17.     letters[c] = 1   # if letter not in letters set add letter to dictionary object
  18.  
  19.  
  20. def print_letters(letters):
  21.  
  22.   for k,v in letters.items():
  23.     if k in whitelist:
  24.       print "Has %s of letter %s" % (v,k) # print out count for each letter
  25.  
  26.  
  27. #-------------------------------------------------#
  28. #  Run code                                       #
  29. #-------------------------------------------------#
  30.  
  31.  
  32. for line in input:          # for each line in input file
  33.   for letter in line:       # for each letter in line
  34.     count_letter(letter)    # tally a count of each letter
  35.  
  36. print_letters(letters)
  37.  

在这里,我使用了一种更典型的语法,这意味着更少的代码行。如果您计算所有内容并将您关心的字符列入白名单,那么您的代码将来很容易被修改。
希望这个能帮上忙!

# 回答4


非常整洁的迈克尔

标签: python

添加新评论