diff --git a/app/WordFreq.py b/app/WordFreq.py index 3620a41..0528b63 100644 --- a/app/WordFreq.py +++ b/app/WordFreq.py @@ -20,6 +20,6 @@ class WordFreq: if __name__ == '__main__': - f = WordFreq('BANANA; Banana, apple ORANGE Banana banana.') + f = WordFreq('i\'m BANANA; Banana, apple ORANGE Bana-na/////,./;\'[]-=---\'/-banana.') print(f.get_freq()) diff --git a/app/wordfreqCMD.py b/app/wordfreqCMD.py index 9ee7e56..c7c90fa 100644 --- a/app/wordfreqCMD.py +++ b/app/wordfreqCMD.py @@ -8,6 +8,7 @@ import string import operator import os, sys # 引入模块sys,因为我要用里面的sys.argv列表中的信息来读取命令行参数。 import pickle_idea +import re def freq(fruit): ''' @@ -18,7 +19,7 @@ def freq(fruit): ''' result = [] - + fruit = fruit.lower() # 字母转小写 flst = fruit.split() # 字符串转成list c = collections.Counter(flst) @@ -39,19 +40,26 @@ def file2str(fname):#文件转字符 def remove_punctuation(s): # 这里是s是形参 (parameter)。函数被调用时才给s赋值。 - special_characters = '_©~=+[]*&$%^@.,?!:;#()"“”—‘’' # 把里面的字符都去掉 + special_characters = '_©~=+[]*&$%^@.,?!:;#()"“”—‘’' #把里面的字符都去掉 for c in special_characters: s = s.replace(c, ' ') # 防止出现把 apple,apple 移掉逗号后变成 appleapple 情况 s = s.replace('--', ' ') + '''cop = re.compile("[^a-z^A-Z^\\']")#通过正则表达式保留英文字符和-、'两个特殊字符 + s=cop.sub(' ' , s)''' s = s.strip() # 去除前后的空格 - - if '\'' in s: + #s=keep_need_punctuation(s,'-') + s=keep_need_punctuation(s,'\'') + return s + + +def keep_need_punctuation(s,need):#用于保留特定的字符 + if need in s: n = len(s) - t = '' # 用来收集我需要保留的字符 - for i in range(n): # 只有单引号前后都有英文字符,才保留 - if s[i] == '\'': + t = '' # 用来收集我需要保留的字符 + for i in range(n): # 只有单引号前后都有英文字符,才保留 + if s[i] == need: i_is_ok = i - 1 >= 0 and i + 1 < n - if i_is_ok and s[i-1] in string.ascii_letters and s[i+1] in string.ascii_letters: + if i_is_ok and s[i - 1] in string.ascii_letters and s[i + 1] in string.ascii_letters: t += s[i] else: t += s[i] @@ -59,7 +67,6 @@ def remove_punctuation(s): # 这里是s是形参 (parameter)。函数被调用 else: return s - def sort_in_descending_order(lst):# 单词按频率降序排列 lst2 = sorted(lst, reverse=True, key=lambda x: (x[1], x[0])) return lst2 @@ -104,7 +111,7 @@ if __name__ == '__main__': print('%s\t%d\t%s' % (x[0], x[1], youdao_link(x[0])))#函数导出 # 把频率的结果放result.html中 - make_html_page(sort_in_descending_order(L), 'result.html') + make_html_page(sort_in_descending_order(L), 'result.html') print('\nHistory:\n') if os.path.exists('frequency.p'):