1. ホーム
  2. パイソン

[解決済み] AttributeError: 'str' オブジェクトは、文字列を検索してその行を印刷しようとするときに 'readline' という属性を持ちません。

2022-03-03 15:07:23

質問

ユーザーから入力を受け取り、ファイルから文字列を検索し、その行を印刷しようとしています。実行しようとすると、このエラーが出続けます。私のコードは次のとおりです。

file = open("file.txt", 'r')
data = file.read()
zinput = str(input("Enter the word you want me to search: "))
for zinput in data:
    line = data.readline()
    print (line)

解決方法は?

あなたのコードには、改善すべき点がたくさんあります。

  • data は文字列であり str には属性がありません。 readline() .
  • read は、ファイルから全内容を読み込みます。このようなことはしないでください。
  • break を見つけると、そのループは zinput .
  • が終了したら、ファイルを閉じるのを忘れないでください。

アルゴリズムはとてもシンプルです。

1) ファイルオブジェクトはイテラブルであり、一行ずつ読みます。

2) もしある行にあなたの zinput を表示します。

コード

file = open("file.txt", 'r')
zinput = str(input("Enter the word you want me to search: "))
for line in file:
    if zinput in line:
        print line
        break
file.close()

オプションで with を使えば、もっと簡単に、もっと短くできます。これは、あなたのためにファイルを閉じてくれます。

コード

zinput = str(input("Enter the word you want me to search: "))
with open("file.txt", 'r') as file:
    for line in file:    
        if zinput in line:
            print line
            break