

以下のエラーはどう直せばよいのでしょうか。

[code]

    C:\UsersDesktop>python PrepareChain.py sample.txt
    Traceback (most recent call last):
      File "PrepareChain.py", line 249, in <module>
        chain = PrepareChain(text)
      File "PrepareChain.py", line 33, in __init__
        text = text.decode("utf-8")
    AttributeError: 'str' object has no attribute 'decode'
    
[/code]

該当する行については

### 33行目周辺

[code]

    32 if isinstance(text, str):
    33           text = text.decode("utf-8")
    34        self.text = text
    
[/code]

### 249行目周辺

[code]

     243 f = open(param[1], encoding='utf-8')
     244   text = f.read()
     245   f.close()
     246
     247  # print (text)
     248
     249   chain = PrepareChain(text)
     250   triplet_freqs = chain.make_triplet_freqs()
     251   chain.save(triplet_freqs, True)
    
[/code]

です。


CC BY-SA 4.0
2019-03-10T11:47:59.407
53340
2019-03-11T23:05:17.643
2020-06-17T08:14:45.997
-1
32476
question
python python3
AttributeErrorの直し方


decodeメソッドはバイト列を変換する際に用いられるメソッドです。そのためstringオブジェクトにdecodeメソッドは用意されていません。  
今回のエラーはそれを指摘しているものです。stringオブジェクトからバイト列への変換にはencodeメソッドを利用してください。

[code]

    text = text.encode('utf-8')
    
[/code]

しかし、ファイルオープンの時点でencodingを指定しているのでこの処理自体必要ないかもしれません。


CC BY-SA 4.0
2019-03-11T09:19:19.163
53362
2019-03-11T09:19:19.163
32497
53340
answer


おそらく、python2で書かれたプログラムをpython3で実行しようとされているのだと思います（strのdecodeはpython3にはないので）。

動かしたいのは以下で紹介されているTextGeneratorでしょうか。  
<https://karaage.hatenadiary.jp/entry/2016/01/27/073000>

であればこのページが参考になるとおもいます。  
[https://qiita.com/betit0919/items/4fbba42de6df90bc7088#text-
generatorの利用](https://qiita.com/betit0919/items/4fbba42de6df90bc7088#text-
generator%E3%81%AE%E5%88%A9%E7%94%A8)

上記リンク先では、`2to3`でpython2のコードをpython3に自動変換したあと、ご質問の箇所を手動で訂正しています。

問題の箇所だけでなく、前提条件を漏れなく書くと回答をもらいやすいと思いますよ。


CC BY-SA 4.0
2019-03-11T23:05:17.643
53371
2019-03-11T23:05:17.643
12561
53340
answer