파이썬 3에서 바이트와 문자열을 변환하는 방법은 무엇입니까?
이것은 Python 101 유형의 질문이지만, 제가 문자열 입력을 바이트로 변환하는 것처럼 보이는 패키지를 사용하려고 할 때 잠시 당황했습니다.
아래에 보시는 것처럼 저는 스스로 답을 찾았지만, 무슨 일이 일어나고 있는지 알아내는 데 걸린 시간 때문에 여기에 기록할 가치가 있다고 느꼈습니다.인 것 제가 것 . (단, 특정 에 Python 3의 에가지것같제아서가놀다참않니원습았지조하를패지키래던고일인반적▁that▁the▁a▁had▁itjust▁i다▁(않ular니습▁package▁error에▁partic,았▁seem참▁to▁it▁does▁seems▁3▁package지▁python하▁be▁3▁so▁with▁an▁not조▁original▁to▁be▁python▁i▁generic;▁to▁playing를지▁to). 오류가 아닌 것 같습니다. (단, 특정 패키지에 오류가 있었습니다.).tostring()
분명히 내가 이해한 끈을 생산하지 않는 방법...)
내 테스트 프로그램은 다음과 같습니다.
import mangler # spoof package
stringThing = """
<Doc>
<Greeting>Hello World</Greeting>
<Greeting>你好</Greeting>
</Doc>
"""
# print out the input
print('This is the string input:')
print(stringThing)
# now make the string into bytes
bytesThing = mangler.tostring(stringThing) # pseudo-code again
# now print it out
print('\nThis is the bytes output:')
print(bytesThing)
이 코드의 출력은 다음과 같습니다.
This is the string input:
<Doc>
<Greeting>Hello World</Greeting>
<Greeting>你好</Greeting>
</Doc>
This is the bytes output:
b'\n<Doc>\n <Greeting>Hello World</Greeting>\n <Greeting>\xe4\xbd\xa0\xe5\xa5\xbd</Greeting>\n</Doc>\n'
따라서, 비-아스키 문자가 고블데어로 변환되는 것을 방지하기 위해 바이트와 문자열 사이를 변환할 수 있어야 합니다.
위 코드 샘플의 '망글러'는 다음과 같은 작업을 수행했습니다.
bytesThing = stringThing.encode(encoding='UTF-8')
이것을 쓰는 다른 방법들이 있습니다 (특히 사용).bytes(stringThing, encoding='UTF-8')
그러나 위의 구문을 사용하면 현재 진행 중인 작업과 문자열을 복구하기 위해 수행해야 할 작업이 명확해집니다.
newStringThing = bytesThing.decode(encoding='UTF-8')
이렇게 하면 원래 문자열이 복구됩니다.
참고, 용사를 사용합니다.str(bytesThing)
UTF-8, 즉, 특별히 요청하지 않는 한, 모든 고블 디코드를 유니코드로 다시 변환하지 않고 그대로 기록합니다.str(bytesThing, encoding='UTF-8')
인코딩이 지정되지 않은 경우 오류가 보고되지 않습니다.
python3가 .bytes()
한 방 형 의 법식동과 같은 encode()
.
str1 = b'hello world'
str2 = bytes("hello world", encoding="UTF-8")
print(str1 == str2) # Returns True
저는 문서에서 이것에 대해 아무것도 읽지 않았지만, 아마도 제가 올바른 장소를 찾고 있지 않았을 것입니다.이렇게 보다 더 쉽게 수 .encode
그리고.decode
를 붙이지 .b
인용문 앞에
이것은 Python 101 유형의 질문입니다.
그것은 간단한 질문이지만 답이 그렇게 간단하지 않은 질문입니다.
python3에서 "bytes" 객체는 바이트 시퀀스를 나타내고, "string" 객체는 유니코드 코드 포인트 시퀀스를 나타냅니다.
"bytes"에서 "string"으로, "string"에서 "bytes"로 다시 변환하려면 bytes.decode 및 string.encode 함수를 사용합니다.이러한 함수에는 인코딩 및 오류 처리 정책이라는 두 가지 매개 변수가 사용됩니다.
슬프게도 텍스트를 표현하기 위해 바이트 시퀀스가 사용되는 경우가 매우 많지만, 어떤 인코딩이 사용되고 있는지 반드시 잘 정의되어 있지는 않습니다.유닉스 계열 시스템의 파일 이름을 예로 들어보자, 커널에 관한 한, 그것들은 소수의 특별한 값을 가진 바이트 시퀀스이며, 대부분의 현대 디스트리뷰터에서 대부분의 파일 이름은 UTF-8이 될 것이지만 모든 파일 이름이 될 것이라는 보장은 없습니다.
강력한 소프트웨어를 작성하려면 이러한 매개 변수에 대해 신중하게 생각해야 합니다.바이트가 어떤 인코딩에 포함되어야 하는지, 그리고 바이트가 있어야 한다고 생각한 인코딩에 대한 유효한 바이트 시퀀스가 아닌 경우를 어떻게 처리할지 신중하게 생각해야 합니다.Python은 기본적으로 UTF-8로 설정되며 유효하지 않은 바이트 시퀀스에서 오류가 발생합니다.
인쇄(바이트)사물)
Python은 "repr"을 문자열로의 폴백 변환으로 사용합니다.repr은 개체를 다시 만드는 파이썬 코드를 생성하려고 시도합니다.바이트 개체의 경우 인쇄 가능한 ASCII 범위를 벗어나는 바이트를 의미합니다.
사용해 보십시오.
StringVariable=ByteVariable.decode('UTF-8','ignore')
테스트 유형:
print(type(StringVariable))
여기서 'StringVariable'은 문자열로 표시됩니다.'ByteVariable'은 Byte를 나타냅니다.변수에 대한 질문과 관련이 없습니다.
언급URL : https://stackoverflow.com/questions/14010551/how-to-convert-between-bytes-and-strings-in-python-3
'code' 카테고리의 다른 글
SQL에서 조인 순서가 중요합니까? (0) | 2023.05.13 |
---|---|
jQuery의 큐란 무엇입니까? (0) | 2023.05.13 |
1999년 10월 12일의 의미는 무엇입니까? (0) | 2023.05.08 |
왜 MongoDB가 SQL DB보다 훨씬 빠른지에 대한 구체적이고 구체적인 이유가 있습니까? (0) | 2023.05.08 |
로컬에서 실행되는 도커 컨테이너에서 Azure Keyvault에 액세스하는 방법은 무엇입니까? (0) | 2023.05.08 |