2017-11-06 5 views
0

Python初心者からのもう一つの質問。Python - 特定の文字列を見つける[少なくとも2語]

私は5つの異なる単語/文章を入力することができます。ユーザーは5つの単語を入力した後、5つのテキストのうちの1つを再度入力し、プログラムはこの文字列を配列から削除します。

しかし、私はこの配列上を実行し、配列内の文字列の中に少なくとも2ワードがあるかどうかを調べたいときに問題が始まります。

Text = [] 
for i in range(0, 5): 
    Text.append(input('Enter the text: ')) 

    print (Text) 
for i in range(0, 1): 
    Text.remove(input('Enter one of the texts you entered before: ')) 
    print (Text) 

for i in range(0, 1): 
    Text.insert(0,input('Enter Some Text: ')) 
    print (Text) 

for s in Text: 
    if s.isspace(): 
     print(Text[s]) 

出力:

Enter the text: A 
['A'] 
Enter the text: B 
['A', 'B'] 
Enter the text: C D 
['A', 'B', 'C D'] 
Enter the text: E 
['A', 'B', 'C D', 'E'] 
Enter the text: F 
['A', 'B', 'C D', 'E', 'F'] 
Enter one of the texts you entered before: F 
['A', 'B', 'C D', 'E'] 
Enter Some Text: G 
['G', 'A', 'B', 'C D', 'E'] 
Press any key to continue . . . 

だから、私のコードは何もしない、私は文字列のいずれかが、少なくとも2つの単語や印刷、それらのすべてを持っている場合は何とか見つける必要があります言葉。

+0

だろうか?その場合、関数split()は文字列を取り、文字列のリストを空白なしで返します。例:my_string = "hello world" .split()then my_string = ["hello"、 "world"] – MtWoRw

答えて

0

したがって、私のコードは何もしません。 文字列のいずれかに2ワード以上が含まれていれば、それらの単語をすべて印刷する必要があります。

おそらくリストをループして各文字列を分割します。次いで、得られた合計が1以上であるかどうかを判断:

text_list = ['G', 'A', 'B', 'C D', 'E'] 

for i in range(len(text_list)): 
    if len(text_list[i].split(' ')) > 1: 
     print(text_list[i]) 

リスト内包使い方:上記のコードで

x = [w for w in text_list if len(w.split(' ')) > 1] 
print(x) 
+0

大変ありがとうございます。今は動作しています。 –

0
for s in Text: 
if s.isspace(): 
    print(Text[s]) 

、sがsは可能性があなたの例では例えば完全な文字列があります'CD'とこの文字列はスペースではありません。

sに2つ以上の単語があるかどうかを調べるには、.split( '')を使用できますが、その前に文字列を.strip()して境界から空白を削除する必要があります。上記の例では

s = 'Hello World ' 
print(s.strip().split(' ')) 
>>> ['Hello', 'World'] 

、Sは二つのスペースを持っているので、境界スペースで、その後、分割があなたのスペースで分離されている文字列のリストを与えるので、ストリップが、最後のスペースを削除します。

だからあなたの問題を解決するには、あなたは、単一の入力値が複数の単語であるかどうかを判断しようとしています

for s in Text: 
    if len(s.strip().split(' ')) > 1: 
     print(s.strip().split(' ')) 
関連する問題