2017-09-17 4 views
-1

(Python3로 변환) str에 바이트를 CONCAT 수 없습니다 그러나 나는 다음과 같은 오류를 수신하고 있습니다 :내가 Python3 내 파이썬 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 

:

나는 encode 매개 변수를 디코딩하거나 제거하기 위해 encode를 변경하려고했지만 완전히 이해할 수 없습니다. 어떤 도움을 주시면 감사하겠습니다.

+1

추적 코드의 코드가 표시된 소스 코드와 일치하지 않기 때문에 2to3을 코드에서 실행하고 있습니까? – Blckknght

답변

0

Python3에는 여러 가지 '문자열'유형이 있습니다. 어떤 것들이 있고 무엇을해야하는지에 대한 세부 사항은 here입니다.

바이트 문자열 (기본적으로 변경 불가능한 문자 배열)을 유니 코드 문자열에 결합하려고합니다. 이것은 (쉽게) 할 수 없습니다.

코드 스 니펫의 문제는 encode 메서드를 사용하여 트윗 텍스트 (대부분의 경우 문자열)가 바이트로 변환된다는 것입니다. 이것은 잘 작동하지만 바이트 객체에 " " (문자열)을 연결하려고하면 오류가 발생합니다. encode을 제거하고 연결을 문자열로 처리하거나 나중에 인코딩 할 수도 있고이 b" "과 같이 따옴표 앞에 '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 ' 

난 당신이 문제에 대한 생각, 가장 간단한 솔루션은 공간 바이트 문자열 수 있도록하는 것입니다. 이게 도움이 되길 바란다.

관련 문제