文字操作是最常見的,以例子的形式來驅動程式的編寫
#-*-encoding:utf-8-*-
import
time
keep =
defnormalize(s):
#大寫轉換成小寫,並且剔除數字等開頭或不在列表中的字元,返回正常字串
result = ''
for c in
s.lower():
if c in
keep:
result +=c
return
result
defmake_freq_dict(s):
#計算頻率次數,將字串轉化成次數字典
s =normalize(s)
words =s.split()
d ={}
for w in
words:
if w in
d: d[w] +=1
else
: d[w] = 1
return
d
defprint_file_stats(fname):
s = open(fname,'r'
).read()
num_chars =len(s)
num_lines = s.count('\n'
) d = make_freq_dict(s) #
一層一層往上呼叫函式
num_words = sum(d[w] for w in
d) lst = [(d[w],w) for w in
d] lst.sort()
lst.reverse()
print("
the file '%s' has:
" %fname)
print("
%s characters
" %num_chars)
print("
%s lines
" %num_lines)
print("
%s words
" %num_words)
print("
\nthe top 10 most frequent words are:")
i=1for count,word in lst[:10]:#
將字典轉換成元組
print('
%2s. %4s個 %s
' %(i,count,word))
i +=1
defmain():
start =time.time()
print_file_stats(
'bill.txt')
end =time.time()
use = end -start
print('
一共花了%s 秒的時間
' %use)
if__name__=='
__main__':
main()
以上為未使用正規表示式的版本
例二:針對之前寫的c語言版本,統計單詞數
#include "stdio.h
"int count_word(char *str);
void
main()
int count_word(char *str)
p++; //
這裡是拋開上面的flag=0,繼續加一。沒有遇到空格的時候 。直到繼續遇到空格或結尾的時候,才不加一了。
}
return
count;
}
統計文字行單詞數
1 include2 include3 using namespace std 4 5 bool rowcount int chars,int words 識別並規範只有乙個狹義字元 不包括分隔符 的文字行13 14 for int i 0 i15 if str i a str i z str i ...
統計一行字元的單詞數
題目 輸入一行字元,統計其中包括多少單詞,單詞之間用空格分隔。要求 輸入格式 a b c d回車 空格可在任意位置,列如行頭行尾可能會有空格。另外數字和字母一樣,也可作為單詞 輸出格式 單詞數 輸入的字串長度最長為256個字元 測試輸入 空格 a a 112 c 空格 回車 輸出 4 用乙個字元陣列...
統計單詞中出現的單詞數
描述 笨小熊的詞彙量很小,所以每次做英語選擇題的時候都很頭疼。但是他找到了一種方法,經試驗證明,用這種方法去選擇選項的時候選對的機率非常大!這種方法的具體描述如下 假設maxn是單詞中出現次數最多的字母的出現次數,minn是單詞中出現次數最少的字母的出現次數,如果maxn minn是乙個質數,那麼笨...