본문 바로가기
개발/Python

[파이썬, Python] str 정리

by 꾀돌이 개발자 2022. 4. 5.
반응형

 

[ 파이썬 str 정리 ]

 

 

help(str) : str 도움말 보기

help(str)

'''
[출력값]

class str(object)
	str(object='') -> str
	str(bytes_or_buffer[, encoding[, errors]]) -> str

	Create a new string object from the given object. If encoding or
	errors is specified, then the object must expose a data buffer
	that will be decoded using the given encoding and error handler.
	Otherwise, returns the result of object.__str__() (if defined)
	or repr(object).
	encoding defaults to sys.getdefaultencoding().
	errors defaults to 'strict'.
'''

 

< explanation >

str() : object 를 string 으로 변환합니다.

 

< syntax of str() >

* object 만 정의하는 경우

str(object='')

* encoding, errors 를 정의하는 경우

str(object=b'', encoding='utf-8', errors='strict')

  • object : string 으로 변환될 객체, 기본값 = "" (empty)
  • encoding : object 의 Encoding 방식을 정의, 기본값 = 'utf-8'
  • errors : object decoding 실패 시 Response 방식 정의, 기본값 = 'strict'

 


errors 의 Response 방식 6 가지

1. strict : UnicodeDecodeError 예외를 발생시킵니다.

a = bytes('hellö', encoding='utf-8')
print(str(a, encoding='ascii', errors='strict'))

# 출력값 : UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 4: ordinal not in range(128)

 

2. ignore : Encoding 할 수 없는 Unicode 를 제외하고 결과값을 출력합니다.

a = bytes('hellö', encoding='utf-8')
print(str(a, encoding='ascii', errors='ignore'))

# 출력값 : hell

 

3. replace : Encoding 할 수 없는 Unicode 를 물음표("?")로 대체합니다.

a = bytes('hellö', encoding='utf-8')
print(str(a, encoding='ascii', errors='replace'))

# 출력값 : hell��

 

4. xmlcharrefreplace : Encoding 할 수 없는 Unicode 대신 XML character reference 를 입력합니다.

 

5. backslashreplace : Encoding 할 수 없는 Unicode 대신 \uNNNN espace sequence 를 입력합니다.

a = bytes('hellö', encoding='utf-8')
print(str(a, encoding='ascii', errors='backslashreplace'))

# 출력값 : hell\xc3\xb6​

 

6. namereplace : Encoding 할 수 없는 Unicode 대신 \N{...} escape sequence 를 입력합니다.

 


object : Create a new string object from the given object.

  • str(object) 에서 object 로 정의된 객체를 문자열로 변환합니다.
  • object 의 기본값은 공백('') 입니다.
  • object 의 기본값이 0이기 때문에 str() 과 같이 인자를 부여하지 않은 경우 공백('') 을 반환합니다.
# 객체를 문자열로 변환
print(str(123)) # 출력값 : '123'
print(str(['a', 'b', 'c'])) # 출력값 : "['a', 'b', 'c']"
print(str(('a', 'b', 'c'))) # 출력값 : "('a', 'b', 'c')"

# object 기본값 = 공백('')
print(str()) # 출력값 : '' # 출력값 :

 


encoding, errors : If encoding or errors is specified, then the object must expose a data buffer that will be decoded using the given encoding and error handler. Otherwise, returns the result of object.__str__() (if defined) or repr(object). encoding defaults to sys.getdefaultencoding(). errors defaults to 'strict'.

  • encoding 은 object 의 encoding 방식을 정의하는 인자입니다.
  • errors 는 object decoding 실패 시 Response 방식을 정의하는 인자이며, 총 6 가지 종류가 있습니다.
  • 단 encoding, errors 가 정의되었다면 object 는 반드시 bytes 혹은 bytearray 값으로 정의되어야 합니다.
  • encoding 의 기본값은 'utf-8 이며, errors 의 기본값은 strict입니다.
  • object 가 bytes 혹은 bytearray 값이고 encoding, errors 가 정의되지 않았다면, bytes 혹은 bytearray 형태 그대로 string type으로 변경됩니다.
# encoding, errors 가 정의되었다면 object 는 반드시 bytes 혹은 bytearray 값으로 정의
a = bytes('abcde', encoding='utf-8')
print(str(a, encoding='utf-8', errors='strict')) # 출력값 : abcde

a = 'abcde'
print(str(a, encoding='utf-8', errors='strict')) # 출력값 : TypeError: decoding str is not supported

# object 가 bytes 혹은 bytearray 값이고 encoding, errors 가 정의되지 않았다면
a = bytes('abcde', encoding='utf-8')
print(str(a)) # 출력값 : b'abcde'

 

 

반응형