2016-09-09 6 views
0

私には2つの問題があります。ここでコードが行く:句読点付きの単語を分割する分割機能。防止したい。アルファベット化する方法を分割した後?

Read =open("C:\Users\Moondra\Desktop/test1.txt",'r') 
text =Read.read() 
words =text.split() 
print(words) 
print(words.sort()) 

##counts=dict() 
##for word in words: 
## counts[word] = counts.get(word,0)+1 
## 
## 
##print counts  

そして、私は読んしようとしているテキスト:

test1.txtという

こんにちはこんにちはこんにちは。

どのようにすべてですか。何が起こっている? あなたはどこですか?こんにちは!!

すぐにお会いできますように。

いつ来るのですか?

夕食にはどうすればよいですか?

最後に!テキストの

エンドtxtファイルから

私の二つの質問は次のとおりです。

  1. 私は回数をカウントカウント各ワードのコードを実装しようとしています各単語が文書に表示されます。 しかし、上記のコードを使用して単語を分割すると、 "Hello"という単語が "Hello !,"または "Hello"と表示されます。別々に。どうすればこれを避けることができますか?

  2. 次に、アルファベット順にリストの要素をソートしようとしましたが、sort()メソッドを実行した後に返されるのは、実際には私を混乱させるnoneです。

ありがとう!

+0

[正規表現](https://docs.python.org/2/library/re.html)をご覧ください。 – gabra

答えて

2

このコードは、あなたが説明した何のために働く必要があります。

  • 私が代わりに並べ替えのreモジュールを使用:

    import re 
    
    with open("C:\Users\Moondra\Desktop/test1.txt", 'r') as file: 
        file = file.read() 
    
    words_list = re.findall(r"[\w]+", file) 
    words_list = sorted(words_list, key=str.lower) 
    
    patterns = ["Hello"] 
    counter = 0 
    
    
    for word in words_list: 
        for pattern in patterns: 
         if word == pattern: 
          counter+=1 
    
    print("The word Hello occurred {0} times".format(counter)) # prints the number of times 'Hello' was found 
    print(words_list) # prints your list alphabetically 
    

    あなたはしかし、注意すべき点がいくつかあります。これは、regular expressionエンジンをreモジュールに使用すると、split()関数を使用して文字列を分割しようとするよりもずっと複雑ではないからです。

  • 私は、PEP8のガイドとPythonの命名規則に従うようにいくつかの変数の名前を変更しました。自由に名前を変更してください。
  • 理由はsort()がリストを返したためです。リストのsort()属性は新しいリストを返しませんが、古いものを変更します。つまり、リストの属性sort()が適切にソートされます。使用していたsort()はデータ型Noneを返します。代わりに、組み込みのPython関数sorted()を使用する必要があります。 sorted()関数は、データ型listを返します。
+1

ファイルを読み込んだ後にメモリが解放されることを確実にするために、 'with'ステートメントを使ってファイルを開くほうがよいでしょうか? – gabra

+1

@gabra良い点は、それに応じて編集されます。 –

+0

ありがとうございます。私はコードと再モジュールで遊んで、さらに質問があるかどうか確認します。 リストのsort()属性は新しいリストを返しませんが、古いリストを返します。つまり、リストのsort()属性は、代わりにPython関数sorted()を使用する必要があります。 私はこのコメントに少し混乱しています。 SORT関数はリストを返しませんでした。(リストでない限り)NONEを返しました – Moondra

関連する問題