파이썬에서 데이터 유형을 문자열로 변경하는 방법


135

파이썬에서 데이터 유형을 문자열로 어떻게 변경합니까?


10
str(var)? 당신이 찾고있는 것입니까?
SilentGhost

2
사람이 읽을 수있는 데이터의 문자열 표현을 원하십니까? 또는 데이터를 포함하는 메모리에 대한 바이트 중심의 뷰를 원하십니까?
Jeremy Brown

변경하려는 데이터 유형에주의하십시오. 아래 답변 참조
PythoNic

답변:


126
myvariable = 4
mystring = str(myvariable)  # '4'

또한 대안 적으로 repr을 시도하십시오.

mystring = repr(myvariable) # '4'

이것을 파이썬에서 "변환"이라고하며 매우 일반적입니다.


6
repr (myvariable)을 사용하지 않을 것입니다. 종종 클래스 유형, 메모리 주소 등에 대한 정보를 반환합니다. 디버깅에 더 유용합니다. 문자열로 변환 할 때는 str (myvariable)을 사용하고 유니 코드로 변환하려면 유니 코드 (variable)를 사용하십시오.
Abgan

2
유니 코드는 어떻습니까? 같은 str(u'ä')것이 작동하지 않습니다. 그러나 repr(u'ä')작동합니다.
Rouven B.

1
None과 False는 어떻습니까?
fredless 2016 년

54

str객체 데이터의 문자열 표현을 생성하기위한 것입니다. 당신이 당신의 자신의 수업을 작성하고 당신 str을 위해 일하고 싶다면 , 다음을 추가하십시오

def __str__(self):
    return "Some descriptive string"

print str(myObj)전화 myObj.__str__()합니다.

repr비슷한 방법으로, 일반적으로 클래스 정보에 대한 정보를 생성합니다. 대부분의 핵심 라이브러리 객체의 repr경우 꺾쇠 괄호 사이에 클래스 이름 (및 때로는 클래스 정보)이 생성됩니다. repr예를 들어, print다른 것을 사용하지 않고 인터랙션 창에 객체를 입력하면됩니다 .

다음 repr과 같이 동작을 정의 할 수있는 것처럼 자신의 객체에 대한 동작을 정의 할 수 있습니다 str.

def __repr__(self):
    return "Some descriptive string"

>>> myObj상호 작용 창에서 또는 repr(myObj)에서 발생합니다myObj.__repr__()


원시 백분율에 의한 대부분의 핵심 라이브러리 객체는 object.__repr__스타일 꺾쇠 괄호 표현을 반환 하지만 사실 가장 많이 사용되는 객체는 그렇지 않습니다. 대한 엄지 손가락의 규칙은 repr있다가, 같은 객체를 생성하는 평가 될 수 파이썬 코드를 반환하는 것이 합리적 경우 그를 수행하는 것이 단지 같은 str, frozenset그리고 다른 대부분의 내장 명령은 할 수 있지만, 그렇지 않은 경우, 각 브래킷을 사용하여 당신이 반환하는 것이 사람이 읽을 수 있고 평가할 수있는 소스 repr로 오해 될 수 없도록하는 양식.
abarnert

(물론 일부 내장 list은 그 경험 법칙에 위배됩니다.이 규칙 은 외관상뿐만 아니라 평가할 수있는 코드를 잘못 반환하는 코드를 반환하지만 핵심 개발자는이를 동일하게 확장하기위한 라이센스로 사용한 적이 없습니다. stdlib에 행동.)
abarnert

19

모든 답변을 사용하는 것이 좋습니다 str(object). 객체에 ASCII 문자보다 많은 문자가 있으면 오류가 발생할 수 ordinal not in range(128)있습니다. 영어 이외의 언어로 문자열 목록을 변환하는 동안 이것은 나를위한 경우였습니다.

나는 그것을 사용하여 그것을 해결했다. unicode(object)


7
파이썬 3.0부터 str (object)은 기본적으로 유니 코드를 수행합니다
dmjalund

13

str(object) 트릭을 할 것입니다.

객체가 문자열 화되는 방식을 변경하려면 __str__(self)객체의 클래스에 대한 메소드를 정의하십시오 . 이러한 메소드는 str 또는 unicode 객체를 반환해야합니다.


어떤 방법이 효율적입니까? str(any_var)또는any_var.__str__()
Kedar.Aitawdekar

@ Kedar.Aitawdekar : 실행 시간에 눈에 띄는 차이가 있더라도 (의문의 여지가 있지만 timeit모듈 을 사용하여 거부하는 것이 좋습니다 ) str(any_var)사람이 더 읽기 쉽고 any_var정의가 __repr__()있지만 정의 되지 않은 경우의 이점을 얻을 수 있기 때문에 사용해야 합니다 . t 정의 __str__()합니다.
Abgan

답장을 보내 주셔서 감사합니다.
Kedar.Aitawdekar

12

str내장을 사용하십시오 .

x = str(something)

예 :

>>> str(1)
'1'
>>> str(1.0)
'1.0'
>>> str([])
'[]'
>>> str({})
'{}'

...

설명서에서 :

멋지게 인쇄 가능한 객체 표현을 포함하는 문자열을 반환합니다. 문자열의 경우 문자열 자체를 반환합니다. repr (object)와의 차이점은 str (object)가 eval ()에 허용되는 문자열을 항상 반환하지는 않는다는 것입니다. 그것의 목표는 인쇄 가능한 문자열을 반환하는 것입니다. 인수가 제공되지 않으면 빈 문자열 ''을 리턴합니다.


5

str(x). 그러나 모든 데이터 형식은 고유 한 문자열 변환을 정의 할 수 있으므로 원하는 형식이 아닐 수도 있습니다.


3
이것은 중요하지만 드문 고려 사항입니다. 당신이 언급 한 것이 좋습니다.
jathanism



0

서식 사용 :

"%s" % (x)

예:

x = time.ctime(); str = "%s" % (x); print str

출력 : Thu Jan 11 20:40:05 2018


0

실제로 데이터 유형을 "변경"하려면주의하십시오. 다른 경우와 같이 (예를 들어 for루프 에서 반복자를 변경 ) 예기치 않은 동작이 발생할 수 있습니다.

>> dct = {1:3, 2:1}
>> len(str(dct))
12
>> print(str(dct))
{1: 31, 2: 0}
>> l = ["all","colours"]
>> len(str(l))
18
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.