diff --git a/app/wordfreqCMD.py b/app/wordfreqCMD.py index 9ee7e56..8973064 100644 --- a/app/wordfreqCMD.py +++ b/app/wordfreqCMD.py @@ -38,20 +38,42 @@ def file2str(fname):#文件转字符 return s +def str2chararray(str): # 字符串转字符数组 + chararray = [] + for i in range(len(str)): + chararray.append(str[i]) + return chararray + + def remove_punctuation(s): # 这里是s是形参 (parameter)。函数被调用时才给s赋值。 - special_characters = '_©~=+[]*&$%^@.,?!:;#()"“”—‘’' # 把里面的字符都去掉 + # carr = str2chararray(s) # 字符串转字符数组 + # print(carr) + special_characters = '&_~=+[]%^@.,?!:;#()"“”—‘’|/\\<>{}' # 把里面的字符都去掉 + special_words = ('$lt', '$gt', '$') # 特殊词汇 for c in special_characters: - s = s.replace(c, ' ') # 防止出现把 apple,apple 移掉逗号后变成 appleapple 情况 + s = s.replace(c, ' ') # 防止出现把 apple,apple 移掉逗号后变成 appleapple 情况 + carr = str2chararray(s) # 字符串转字符数组 + for i, value in enumerate(carr): + if value == '&': # 遍历替换 + carr[i] = '\'' + print('sss' + s) + for j in range(1,5): + if carr[i+j] in [' ','3','9']: + carr[i + j]='' + s = ''.join(carr) # 字符数组转字符串 + print('sss'+s) + for w in special_words: # 替换字符串中的剩余特殊字符 + s = s.replace(w, ' ') s = s.replace('--', ' ') - s = s.strip() # 去除前后的空格 - + s = s.strip() # 去除前后的空格 + if '\'' in s: n = len(s) - t = '' # 用来收集我需要保留的字符 - for i in range(n): # 只有单引号前后都有英文字符,才保留 + t = '' # 用来收集我需要保留的字符 + for i in range(n): # 只有单引号前后都有英文字符,才保留 if s[i] == '\'': 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] @@ -60,6 +82,7 @@ def remove_punctuation(s): # 这里是s是形参 (parameter)。函数被调用 return s + def sort_in_descending_order(lst):# 单词按频率降序排列 lst2 = sorted(lst, reverse=True, key=lambda x: (x[1], x[0])) return lst2