>  기사  >  백엔드 개발  >  문자열과 바이트열류 객체를 연결할 때 `.join()`이 예기치 않은 결과를 생성하는 이유는 무엇입니까?

문자열과 바이트열류 객체를 연결할 때 `.join()`이 예기치 않은 결과를 생성하는 이유는 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-12 13:26:02368검색

Why Does `.join()` Produce Unexpected Results When Concatenating a String and a Bytes-like Object?

.join()이란 무엇이며 문자열 연결에서 어떻게 작동하나요?

Python의 .join() 메서드는 문자열에 일반적으로 사용됩니다. 연쇄. 그러나 제공된 예제를 테스트했을 때 예상치 못한 결과가 나타났습니다. 이 메소드의 목적과 사용법을 이해하면 왜 그렇게 작동했는지 명확하게 알 수 있습니다.

.join() 메소드는 문자열에서 작동하며 반복 가능한 요소를 인수로 사용합니다. 연결하는 동안 반복 가능 항목의 각 요소 사이에 지정된 문자열을 삽입합니다.

예:

",".join(["a", "b", "c"])
# Output: 'a,b,c'

제공된 예에서:

array.array('c', random.sample(string.ascii_letters, 20 - len(strid)))
.tostring().join(strid)

tostring() 메서드는 문자 배열을 바이트열류 객체로 변환합니다. 그런 다음 이 바이트열류 객체는 문자열 "595"와 함께 .join()에 대한 입력으로 사용됩니다.

그러나 이해해야 할 중요한 점은 문자열 "595"가 다음 항목의 목록으로 처리된다는 것입니다. 개별 문자(예: ["5", "9", "5"]) 따라서 ".join()"은 이 목록에서 작동하여 각 문자 사이에 바이트열류 객체를 삽입합니다.

5wlfgALGbXOahekxSs9wlfgALGbXOahekxSs5
^                 ^                 ^

출력의 각 "5", "9", "5"는 삽입을 나타냅니다. 원래 문자열의 문자 사이에 바이트열 객체를 연결합니다.

의도한 연결을 달성하려면 연산자를 대신 사용할 수 있습니다.

array.array('c', random.sample(string.ascii_letters, 20 - len(strid)))
.tostring() + strid

이 접근 방식은 바이트열을 직접 연결합니다. 문자열 "595"를 사용하여 문자 사이에 삽입하지 않고 원하는 출력을 생성합니다.

위 내용은 문자열과 바이트열류 객체를 연결할 때 `.join()`이 예기치 않은 결과를 생성하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.