記事のディレクトリ
請求
HarryPotter5.txt英語小説の単語頻度を数え、最も頻繁に使用される上位20語を数え、それらを印刷またはファイルに書き込みます。
1つは、ファイルを開きます
ファイルを開き、単語内の単語以外の文字をスペースに置き換えます
コード:
#读取小说内容
fp = open('HarryPotter5.txt')
content = fp.read()
#所有标点符号 用空格代替
#匹配非单词字符的字符
content = re.sub('\W',' ',content)
# Python split() 通过指定分隔符对字符串进行切片
words = content.split() # 以空格为分隔符,包含 \n
正規表現
\ W
__は単語文字ではない文字と一致します。_これ\ w反対。ASCIIフラグが使用されている場合、これは[^ a-zA-Z0-9 ]と同等です。LOCALEフラグが使用されている場合、現在の領域で英数字でもアンダースコアでもない文字と一致します。
spilt()関数
Python split()は、区切り文字を指定して文字列をスライスします。パラメータnumに指定された値がある場合は、num +1個の部分文字列を区切ります。
str.split(str = ""、num = string.count(str))。
str-区切り文字。デフォルトは、スペース、改行(\ n)、タブ(\ t)などを含むすべての空の文字です。
num-除算の数。デフォルトは-1で、すべてを区切ります
インスタンス
str = "Line1-abcdef \nLine2-abc \nLine4-abcd";
print str.split( ); # 以空格为分隔符,包含 \n
print str.split(' ', 1 ); # 以空格为分隔符,分隔成两个
上記の例の出力は次のとおりです。
['Line1-abcdef'、 'Line2-abc'、 'Line4-abcd']
['Line1-abcdef'、 '\ nLine2-abc \ nLine4-abcd']
次の例では、区切り記号として#記号を使用し、2番目のパラメーターを1として指定し、2つのパラメーターリストを返します。
txt = "Google#Runoob#Taobao#Facebook"
# 第二个参数为 1,返回两个参数列表
x = txt.split("#", 1)
print x
上記の例の出力は次のとおりです。
['Google'、 'Runoob#Taobao#Facebook']
2.単語頻度統計
コードは次のとおりです(例):
#对所有的单词出现次数进行统计
#key-->count 数据结构:Dict字典
wordCounter = {
}
for word in words:
if word in wordCounter:
wordCounter[word] += 1
else:
wordCounter[word] = 1
#print(wordCounter)
#このプリントアウトは故障しており、並べ替える必要があります
3、単語の並べ替え
コードは次のとおりです(例):
#默认按照增序 使用reverse参数改变顺序
sortedWordCounter = sorted(wordCounter.items(),key=lambda item: item[1],reverse=True)
#print(sortedWordCounter) #这是打印排序完毕的词频
Dictディクショナリの最下層はハッシュ構造です。ハッシュ構造は
wordCounter.items()の並べ替えをサポートせず
、リストに置き換えます。このリストの各要素はタプル
です。タプルには2つの要素があります。要素はキーです。2番目の要素は値です。
効果は次のとおりです。
ラムダアイテムの説明:item [1]:
無名関数と同等の関数lambdaを定義するのと同じです。
効果は次のとおりです
。lambdaitem:item [1]:beforeはパラメーターです。afterは戻り値です。
def func(item):
return item[1]
匿名関数は、名前がないことを除いて、通常の関数と同じ効果があります。
4、ファイルの出力または書き込み
コードは次のとおりです(例):
#方法一
print(sortedWordCounter[:20])
#方法二
for item in sortedWordCounter[:20]:
print(item)
#也可以写入文件
fp = open('countwords_result.csv','w')
for (word,count) in sortedWordCounter:
line = word+','+str(count)+'\n'
fp.write(line)
Pythonファイルの書き込み
既存のファイル
への書き込み既存のファイルに書き込むには、open()関数にパラメータを追加する必要があります。
「a」-追加-ファイルの末尾に追加されます
「w」-書き込み-既存のコンテンツを上書きします
注釈:「W」メソッドはすべてのコンテンツをカバーします。
#打开文件 "demofile2.txt" 并将内容追加到文件中:
f = open("demofile2.txt", "a")
f.write("Now the file has more content!")
f.close()
# 追加后,打开并读取该文件:
f = open("demofile2.txt", "r")
print(f.read())
#打开文件 "demofile3.txt" 并覆盖内容:
f = open("demofile3.txt", "w")
f.write("Woops! I have deleted the content!")
f.close()
# 写入后,打开并读取该文件:
f = open("demofile3.txt", "r")
print(f.read())
Pythonで新しいファイルを作成するには、open()メソッドを使用し、次のパラメータのいずれかを使用します。
"x" -create-ファイルが作成されます。ファイルが存在する場合は、エラー
"a"が返されます-append-指定されたファイルが存在しない場合、ファイルは
「w」で作成されます-書き込み-指定されたファイルが存在しない場合、ファイルが作成されます
#创建名为 "myfile.txt" 的文件:
f = open("myfile.txt", "x")
#结果:已创建新的空文件!
#如果不存在,则创建新文件:
f = open("myfile.txt", "w")