'str' 개체에 특성 'filename'이 없습니다.Python 3 오류?
코드는 다음과 같습니다.
import imaplib
from email.parser import HeaderParser
conn = imaplib.IMAP4_SSL('imap.gmail.com')
conn.login('example@gmail.com', 'password')
conn.select()
conn.search(None, 'ALL')
data = conn.fetch('1', '(BODY[HEADER])')
header_data = data[1][0][1].decode('utf-8')
이 시점에서 에러 메세지가 표시됩니다.
AttributeError: 'str' object has no attribute 'decode'
Python 3는 디코딩을 더 이상 하지 않죠?어떻게 하면 고칠 수 있을까요?
또한 다음 항목에서
data = conn.fetch('1', '(BODY[HEADER])')
저는 첫 번째 메일만 골랐습니다.다 어떻게 선택하죠?
이미 디코딩된 개체를 디코딩하려고 합니다.가지고 있다str
UTF-8을 사용하다
그냥 떨어뜨려구니를떨어뜨거져주세요..decode('utf-8')
삭제:
header_data = data[1][0][1]
의 객의에 fetch()
첫 번째 메시지만 명시적으로 요구하고 있습니다.메시지를 더 가져오려면 범위를 사용하십시오.다음의 메뉴얼을 참조해 주세요.
다음 명령어에 대한 message_set 옵션은 액션할 메시지를 하나 이상 지정하는 문자열입니다.단순한 메시지 번호일 수 있습니다(
'1'
번호 「」 「」 「」( )'2:4'
('' ')'1:3,6:9'
을 나타내는 할 수'3:*'
를 참조해 주세요.
PyJPyJ jwt WT v2.0.0으로 설정(22/12/20), PyJ로 설정.WT의 WTrequirements.txt
filename을 클릭합니다.
PyJWT==1.7.1
Python 3부터는 모든 문자열이 Unicode 객체입니다.
a = 'Happy New Year' # Python 3
b = unicode('Happy New Year') # Python 2
이치노 때문에 '아예'는 게 것 요..decode('utf-8')
유니코드입니다.
다음 방법으로 사용:
str.encode().decode()
Python 3에서는 이 mental model은 매우 간단합니다.
- 부호화란, I/O/O/O/O/O/O/O
str
a까지bytes
표시 - 디코딩이란, 디코딩을 변환하는 프로세스입니다.
bytes
str
┏━━━━━━━┓ ┏━━━━━━━┓
┃ ┃ -> encoding -> ┃ ┃
┃ str ┃ ┃ bytes ┃
┃ ┃ <- decoding <- ┃ ┃
┗━━━━━━━┛ ┗━━━━━━━┛
같은 ', '아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 네.data.decode("UTF-8")
, 「」, 「」입니다str
오브젝트 및 이미 디코딩되어 있습니다.해 주세요.data
스트링이 필요한 경우 직접 사용할 수 있습니다.
Python3의 경우
html = """\\u003Cdiv id=\\u0022contenedor\\u0022\\u003E \\u003Ch2 class=\\u0022text-left m-b-2\\u0022\\u003EInformaci\\u00f3n del veh\\u00edculo de patente AA345AA\\u003C\\/h2\\u003E\\n\\n\\n\\n \\u003Cdiv class=\\u0022panel panel-default panel-disabled m-b-2\\u0022\\u003E\\n \\u003Cdiv class=\\u0022panel-body\\u0022\\u003E\\n \\u003Ch2 class=\\u0022table_title m-b-2\\u0022\\u003EInformaci\\u00f3n del Registro Automotor\\u003C\\/h2\\u003E\\n \\u003Cdiv class=\\u0022col-md-6\\u0022\\u003E\\n \\u003Clabel class=\\u0022control-label\\u0022\\u003ERegistro Seccional\\u003C\\/label\\u003E\\n \\u003Cp\\u003ESAN MIGUEL N\\u00b0 1\\u003C\\/p\\u003E\\n \\u003Clabel class=\\u0022control-label\\u0022\\u003EDirecci\\u00f3n\\u003C\\/label\\u003E\\n \\u003Cp\\u003EMAESTRO ANGEL D\\u0027ELIA 766\\u003C\\/p\\u003E\\n \\u003Clabel class=\\u0022control-label\\u0022\\u003EPiso\\u003C\\/label\\u003E\\n \\u003Cp\\u003EPB\\u003C\\/p\\u003E\\n \\u003Clabel class=\\u0022control-label\\u0022\\u003EDepartamento\\u003C\\/label\\u003E\\n \\u003Cp\\u003E-\\u003C\\/p\\u003E\\n \\u003Clabel class=\\u0022control-label\\u0022\\u003EC\\u00f3digo postal\\u003C\\/label\\u003E\\n \\u003Cp\\u003E1663\\u003C\\/p\\u003E\\n \\u003C\\/div\\u003E\\n \\u003Cdiv class=\\u0022col-md-6\\u0022\\u003E\\n \\u003Clabel class=\\u0022control-label\\u0022\\u003ELocalidad\\u003C\\/label\\u003E\\n \\u003Cp\\u003ESAN MIGUEL\\u003C\\/p\\u003E\\n \\u003Clabel class=\\u0022control-label\\u0022\\u003EProvincia\\u003C\\/label\\u003E\\n \\u003Cp\\u003EBUENOS AIRES\\u003C\\/p\\u003E\\n \\u003Clabel class=\\u0022control-label\\u0022\\u003ETel\\u00e9fono\\u003C\\/label\\u003E\\n \\u003Cp\\u003E(11)46646647\\u003C\\/p\\u003E\\n \\u003Clabel class=\\u0022control-label\\u0022\\u003EHorario\\u003C\\/label\\u003E\\n \\u003Cp\\u003E08:30 a 12:30\\u003C\\/p\\u003E\\n \\u003C\\/div\\u003E\\n \\u003C\\/div\\u003E\\n\\u003C\\/div\\u003E \\n\\n\\u003Cp class=\\u0022text-center m-t-3 m-b-1 hidden-print\\u0022\\u003E\\n \\u003Ca href=\\u0022javascript:window.print();\\u0022 class=\\u0022btn btn-default\\u0022\\u003EImprim\\u00ed la consulta\\u003C\\/a\\u003E \\u0026nbsp; \\u0026nbsp;\\n \\u003Ca href=\\u0022\\u0022 class=\\u0022btn use-ajax btn-primary\\u0022\\u003EHacer otra consulta\\u003C\\/a\\u003E\\n\\u003C\\/p\\u003E\\n\\u003C\\/div\\u003E"""
print(html.replace("\\/", "/").encode().decode('unicode_escape'))
라이브러리는 잘 모릅니다만, 바이트 배열을 원하지 않는 것이 문제라면, 한 가지 간단한 방법은 캐스트에 직접 인코딩 유형을 지정하는 것입니다.
>>> my_byte_str
b'Hello World'
>>> str(my_byte_str, 'utf-8')
'Hello World'
Python3에서는 이미 디코딩되어 있습니다.직접 사용해 보세요.
코덱 모듈의 open()을 사용하여 파일을 읽습니다.
import codecs
with codecs.open(file_name, 'r', encoding='utf-8', errors='ignore') as fdata:
이 방법은 효과가 있었습니다.
html.replace("\\/", "/").encode().decode('unicode_escape', 'surrogatepass')
이는 json.loads(html) 동작과 유사합니다.
로지스틱 레깅스를 위해 Kaggle에 참여하는 동안 동일한 오류가 발생한 경우 다음과 같은 해결책이 있습니다.
logmodel = LogisticRegression(solver='liblinear')
다른 답변은 힌트입니다만, 이 문제는 바이트 오브젝트를 상정하고 있기 때문에 발생할 수 있습니다.Python 3에서 디코딩은 클래스 바이트의 개체가 있을 때 유효합니다.디코딩 전에 인코딩을 실행하면 문제가 "수정"될 수 있지만 업스트림에서 문제를 시사하는 불필요한 연산 쌍입니다.
생성하는 동안 'str' 개체에 'decode' 특성이 없습니다.JWT access_token
사용.Flask_JWT_extended
패키지.
이 문제를 수정하기 위해Flask-JWT-Extended
로 포장하다.Flask-JWT-Extended==4.1.0
참조용:
다음 페이지를 방문하십시오.https://flask-jwt-extended.readthedocs.io/en/stable/
먼저 적절한 J를 설치합니다.WT
pip3 install PyJWT
그럼 당신의 코드로
token.encode().decode('UTF-8')
이게 나한테 효과가 있었어 이게 너한테 도움이 될 것 같아
Django 및 simple-jwt를 사용하는 경우:100% 솔루션
pip install PyJWT==1.7.1
이 경우는 조금 드물었지만, django와 함께 작업 중이었고, 프로젝트를 로컬로 실행하고 있었지만 도입했을 때는 그렇지 않았습니다.다음 작업을 하고 있었기 때문에 여러 개의 의존관계 오류가 발생하고 있는 것 같습니다.pip freeze > requirements.txt
이렇게 하면 문제가 해결됩니다.
pip3 freeze > requirements.txt
언급URL : https://stackoverflow.com/questions/28583565/str-object-has-no-attribute-decode-python-3-error
'IT' 카테고리의 다른 글
MariaDB - JSON 어레이를 인덱싱할 수 있습니까? (0) | 2022.11.27 |
---|---|
MySQL: 신호에 적합한 SQLSTATE 값을 선택하려면 어떻게 해야 합니다. (0) | 2022.11.27 |
PHP의 함수 안에 있는 함수 이름을 얻으려면 어떻게 해야 하나요? (0) | 2022.11.27 |
자바에서는 에폭(1970-01-01)부터 밀리초를 취득하려면 어떻게 해야 합니까? (0) | 2022.11.27 |
해결 방법: "http://java.sun.com/jsp/jstl/core"의 태그 라이브러리 기술자를 찾을 수 없습니다. (0) | 2022.11.27 |