2016-11-05 12 views
-8

私はPythonスクリプトを書いています。私は "s、esまたはies"で終わる単語のテキストファイルを検索する必要があり、単語は3文字以上でなければならず、単語数とそれ自身を単語に変換する必要があります.....それは難しい作業です私はそれで動作しない、助けてくださいPythonスクリプトは単語のテキストファイルを検索します

+0

は、*それは私がそれに取り組むカントタスクは難しい* - その後、戻って学びます基本と**実際に**を学ぶ?あなたのためにそれをするように私たちに尋ねることはあなたが何かを学ぶのを助けません。 – Li357

+0

再現可能な例がありますか?ファイルの行を繰り返し処理し、 'if'文を使用して、探しているものを返すようにしてください。 – Jakub

+0

あなたのためにコードを書くことが望ましいようです。多くのユーザーは、苦労しているコーダーのコードを作成したいと考えていますが、通常、ポスターが既に問題を解決しようとしているときにのみ役立ちます。この努力を示す良い方法は、これまでに書いたコード、サンプル入力(もしあれば)、予想される出力、実際に得られる出力(コンソール出力、トレースバックなど)を含めることです。あなたが提供する詳細があれば、受け取る可能性のある回答が増えます。 [FAQ](http://stackoverflow.com/tour)と[How to Ask](http://stackoverflow.com/help/how-to-ask)を参照してください。 –

答えて

2

私は基本的な作業をする必要があるコメントに同意します。ここにあなたを始めるためのいくつかのアイデアがあります。

1)「ファイルを検索する」と言います。ファイルを開き、次のように行ずつ読み:

with open ('myFile.txt', 'r') as infile: 
    for line in infile: 
     # do something to each line 

2)あなたは、おそらくリストのように、データ構造内の各ラインを格納したい:

# before you open the file... 
lines = [] 

# while handling the file: 
lines.append(line) 

3)あなたがする必要があります各単語で作業します。リストの「分割」機能を調べてください。

4)各単語の個々の文字を見る必要があります。 「文字列スライシング」を見てください。

これはすべて10行から15行のコードで行うことができます。

0

圧倒的に感じる場合は、タスクを別のタスクに分割してみてください。 次のコードは決して良いことではありませんが、その点を十分に理解できるほど十分に明確であることを願っています。

1まずテキストを取得する必要があります。あなたのテキストがコンピュータ上のファイルにある場合は、それをPythonが使用できるものに入れる必要があります。

# this code takes the content of "text.txt" and store it into my_text 
with open("text.txt") as file: 
    my_text = file.read() 

2これで、すべての単語を扱う必要があります。あなたの言葉はすべてmy_textという文字列にまとめられており、それらを個別にリストに分けて、個別に作業することができます。それはあなたがそれらを分離するために使用するものですので、通常の単語は、スペースで区切られています。

# take the text and split it into words 
my_words = my_text.split(" ") 

3私は正確に何をしたい知っているが、あなたは異なるリストで別々の単語を保存したいとしてはいけません。次に、これらのリストが必要になります:

# three list to store the words: 
words_s = [] 
words_es = [] 
words_ies = [] 

4これで、単語を繰り返して、それらのものを処理する必要があります。一番簡単な方法は、forループを使用することであることのために:forループの外に、

#iterate through each word 
for word in my_words: 

    # you're not interested in short words: 
    if len(word) <= 3: 
     continue # this means: do nothing with this word 


    # now, if the word's length is greater than 3, you classify it: 

    if word.endswith("ies"): 
     words_ies.append(word) # add it to the list 

    if word.endswith("es"): 
     words_es.append(word) # add it to the list 

    if word.endswith("s"): 
     words_s.append(word)  # add it to the list 

4最後に、あなたは、単語のリストを印刷しても、リストの長さを得ることができます。

print(words_s)  
print(len(words_s)) 

単語を繰り返すかどうかを検討する必要があります。 「s」、「es」または「ies」で終わる条件の単語は、「s」で終わる単語と同等であることに注意してください。上記のコードは、異なるリストにある単語を重複して取得します。単語が "ies"で終わる場合、 "es"と "s"で終わるので、3つのリストに格納されます。重複を避けたい場合は、if文をelse if文で置き換えることができます。他の答えが示唆するとすぐに、このような恐ろしいコードを理解できるようになりますよう

は基本を学習してください:D

with open("text.txt") as myfile: 
    words = [word for word in myfile.read().split(" ") if word.endswith("s") and len(word) > 3] 
    print("There are {} words ending with 's' and longer than 3".format(len(words))) 
関連する問題