[Python]读取.txt文件并分析
大家好!
我正在对任何.txt文件进行Huffman编码,所以首先我需要分析这个文本文件。我需要读一读,然后再进行分析。
我需要像桌子一样的"退场":
*
字母频率(后一次相同重复多少次)霍夫曼编码(这将在以后出现)
************************
我从以下几个方面开始:
选择 | 换行 | 行号
- f = open('test.txt', 'r') #open test.tx
- for lines in f:
- print lines #to ensure if all work...
有谁可以帮我?
# 回答1
选择 | 换行 | 行号
- def countLetters(line, letter):
- ret = 0
- for character in line:
- if character == letter: ret += 1
- return ret
- for line in open("file.txt"):
- line = line.strip()
- print line
- print "Has", countLetters(line, "a"), "of letter a."
- print "Has", countLetters(line, "e"), "of letter e."
- print "Has", countLetters(line, "i"), "of letter i."
- print "Has", countLetters(line, "o"), "of letter o."
- print "Has", countLetters(line, "u"), "of letter u."
- print "Has", countLetters(line, "y"), "of letter y."
# 回答2
修改肖恩的代码:
修改肖恩的代码:
选择 | 换行 | 行号
- #!/bin/python3
- def countLetters(line, letter):
- ret = 0
- for character in line:
- if character == letter: ret += 1
- return ret
- alphabet = 'abcdefghijklmnopqrstuvwxyz'
- #you can automate this using ascii codes too
- for line in open("file.txt",'r'):
- line = line.strip() #remove trailing spaces
- print (line)
- for letter in alphabet:
- print ('Has {0} of letter {1}'.\
- 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
选择 | 换行 | 行号
- #-------------------------------------------------#
- # Set Variables #
- #-------------------------------------------------#
- input = open("file.txt")
- whitelist = ('a','b','c','d','e','f','g') # whitelist of letters
- letters = {}
- #-------------------------------------------------#
- # Functions #
- #-------------------------------------------------#
- def count_letter(c):
- if c in letters:
- letters[c] += 1 # if letter in letters add one
- else:
- letters[c] = 1 # if letter not in letters set add letter to dictionary object
- def print_letters(letters):
- for k,v in letters.items():
- if k in whitelist:
- print "Has %s of letter %s" % (v,k) # print out count for each letter
- #-------------------------------------------------#
- # Run code #
- #-------------------------------------------------#
- for line in input: # for each line in input file
- for letter in line: # for each letter in line
- count_letter(letter) # tally a count of each letter
- print_letters(letters)
在这里,我使用了一种更典型的语法,这意味着更少的代码行。如果您计算所有内容并将您关心的字符列入白名单,那么您的代码将来很容易被修改。
希望这个能帮上忙!
# 回答4
非常整洁的迈克尔
非常整洁的迈克尔
标签: python