https://docs.python.jp/3.5/library/difflib.html
これを使って文字列の類似度をだそうを思っており,
import difflib
a = '1234'
b = '1224'
ob = difflib.SequenceMatcher(isjunk=None, a=a, b=b)
print(ob.ratio())
というふうにしてみましたが,
>>> print(ob.ratio())
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/ユーザ/anaconda/lib/python3.6/codecs.py", line 377, in write
self.stream.write(data)
TypeError: write() argument must be str, not bytes
というエラーが出ました.
ググっても何が原因なのかはよくわかりませんでした.
詳しい方に対処法をご教示いただけたらと思います.
類似度を表示させたいのであれば、ratio() メソッドか、quick_ratio() などを使うのだと思います。
https://docs.python.jp/3.5/library/difflib.html#difflib.SequenceMatcher.ratio
a = '1234' b = '1224' ob = difflib.SequenceMatcher(None, a, b) print(ob.ratio())
質問文を編集しました。詳細はこちら。
原因がわかりました.Python2の環境で使っていた,標準入出力のエンコーディングを指定する
sys.stdout = codecs.getwriter('utf_8')(sys.stdout)
sys.stdin = codecs.getreader('utf_8')(sys.stdin)
という設定を,スクリプトの始めのほうで実行していたのが余計でした.
これを削除したらエラーがでなくなりました.