2017-09-17 9 views
-1

(のpython3への変換)をstrためにバイトをCONCATすることはできませんが、私は、次のエラーが発生します:は私がのpython3に私はPython 2のコードを変換しようとしている

問題がループのためにこれである
Traceback (most recent call last): 
    File "markovtest.py", line 73, in <module> 
    get_all_tweets("quit_cryan") 
    File "markovtest.py", line 41, in get_all_tweets 
    outtweets = [(tweet.text.encode("utf-8") + str(b" ")) for tweet in alltweets] 
    File "markovtest.py", line 41, in <listcomp> 
    outtweets = [(tweet.text.encode("utf-8") + str(b" ")) for tweet in alltweets] 
TypeError: can't concat bytes to str 

私はデコードまたはエンコードパラメータを完全に削除するためにエンコードを変更しようとしましたが、わかりません。どんな助けもありがとう。

+1

トレースバックのコードが表示されているソースコードと一致しないため、コードなどで2to3を実行していますか。 – Blckknght

答えて

0

Python3にはいくつかの異なる '文字列'タイプがあります。どの項目があるのか​​、どのようなことが起こっているのかは、hereで確認できます。

バイト文字列(基本的に不変の文字配列)をユニコード文字列に結合しようとしています。これは(簡単に)行うことはできません。

コードスニペットの問題は、おそらく文字列であるツイートテキストがencodeメソッドでバイトに変換されることです。これは正常に動作しますが、文字列である" "のスペースをバイトオブジェクトに連結しようとすると、エラーが発生します。 encodeを削除し、文字列として連結して(後でエンコードすることもできます)、スペースのように引用符の前に 'b'を追加してスペースをバイトオブジェクトにします。

はのは、あなたのオプションを見てみましょう:

In [1]: type("foo") 
Out[1]: str 

In [2]: type("foo".encode("utf-8")) 
Out[2]: bytes 

In [3]: "foo" + " " # str + str 
Out[3]: 'foo ' 

In [4]: "foo".encode("utf-8") + " " # str + bytes 
--------------------------------------------------------------------------- 
TypeError         Traceback (most recent call last) 
<ipython-input-4-5c7b745d9739> in <module>() 
----> 1 "foo".encode("utf-8") + " " 

TypeError: can't concat bytes to str 

In [5]: "foo".encode("utf-8") + b" " # bytes + bytes 
Out[5]: b'foo ' 

私はあなたの問題のために推測する、最も簡単な解決策は、宇宙バイト文字列にするだろう。私はこれが役立つことを願っています

関連する問題