2017-09-12 14 views
1

私はプログラミングが初めてで、データ解析の学習を始めました。
私は、入力アルファベットで始まる検索し、印刷言葉にするプログラムを書いた.txtファイルからデータを解析するが、それだけで、他のアルファベットとアルファベットa-g、およびデータ解析と文字列インデックスが範囲外のエラー

IndexError:string index out of rangeで正しい結果が表示されています。あなたが最初のオブジェクトの存在/「truthyness」をチェックし、指定されたオブジェクトのためのIndexErrorを参照すると、次の

のpython(3.5.1)とリンクから言葉

def main(): 
    #read file 
    file = open("dict.txt","r") 
    lines = file.readlines() 
    file.close() 
    word = input("Choose the alphabet") 
    for line in lines: 
     line = line.strip() 
     if line[0] == word: 
      print(line) 

main()                   

答えて

1

これはちょっと間違っています。 readlines()はファイル全体を一度に読み込み、行単位で分割し、行のリストを返します。それを反復すると、の文字列オブジェクトが返されます。

したがって、たとえば、あなたのファイルの読み取りがFのようなものに等しくなりますので、ラインを比較

f = ['first line', 'two line', 'third line'] 
for line in f: 
    print line # 'first line' (string) 

[0] [0] =「F」

「最初の行」をやってと同じです

単語を比較する場合は、単語を単語に分割する必要があります。

for line in f: 
    words = line.split() # ['first', 'line'] 
    words[0] == word: 
     print word 
-1

https://raw.githubusercontent.com/mohdomama/Scrabble-C/master/Dict.txtのリストにあります。空リスト、空文字列などは真実ではありません。

ので、代わりの:

if line[0] == word:

試してください:最初のチェックは(if line)失敗した場合

if line and line[0] == word:

、それはPythonのため、インデックス(line[0])をチェックしていきません。 andステートメントでは、両方の条件がTrueであることが必要です。

+0

それが動作し、「を行と行が[0] ==単語場合:」で最初の「行」を行います。その存在をチェックする次の方法で を行うことができますか? –

+0

"Pythonの'と 'はどういう意味ですか?それはちょうど[論理代数]です(https://en.wikipedia.org/wiki/Boolean_algebra) – RedEyed

+0

@OmairKhan yes 'if line'が' line'が存在して真実であるかどうかを調べます。 @RedEyed - 私はPython言語で 'と'の使用を明示しています。 – JacobIRR

関連する問題