[python] Python에서 문자열 형식화로 튜플 인쇄

그래서이 문제가 있습니다. 문자열 형식으로 인쇄해야하는 튜플 (1,2,3)이 있습니다. 예.

tup = (1,2,3)
print "this is a tuple %something" % (tup)

그리고 이것은 대괄호로 튜플 표현을 인쇄합니다.

이것은 튜플 (1,2,3)입니다.

그러나 나는 TypeError: not all arguments converted during string formatting대신 얻는다 .

세상에서 어떻게 할 수 있습니까? 여기서 길을 잃었으므로 여러분이 올바른 방향으로 나를 가리킬 수 있다면 🙂



답변

>>> thetuple = (1, 2, 3)
>>> print "this is a tuple: %s" % (thetuple,)
this is a tuple: (1, 2, 3)

관심있는 튜플을 유일한 항목, 즉 (thetuple,)부품 으로 사용하여 싱글 톤 튜플을 만드는 것이 여기서 핵심입니다.


답변

점을 유의 %구문이 사용되지 않습니다. str.format더 간단하고 읽기 쉬운를 사용하십시오 .

t = 1,2,3
print 'This is a tuple {0}'.format(t)


답변

위에 주어진 많은 답변이 정확했습니다. 이를 수행하는 올바른 방법은 다음과 같습니다.

>>> thetuple = (1, 2, 3)
>>> print "this is a tuple: %s" % (thetuple,)
this is a tuple: (1, 2, 3)

그러나 '%'String 연산자가 쓸모가 없는지에 대한 논쟁이있었습니다 . 많은 사람들이 지적했듯이 '%'String 연산자가 String 문을 목록 데이터와 결합하는 것이 더 쉽기 때문에 확실히 쓸모없는 것은 아닙니다 .

예:

>>> tup = (1,2,3)
>>> print "First: %d, Second: %d, Third: %d" % tup
First: 1, Second: 2, Third: 3

그러나이 .format()함수를 사용하면 장황한 문장으로 끝납니다.

예:

>>> tup = (1,2,3)
>>> print "First: %d, Second: %d, Third: %d" % tup
>>> print 'First: {}, Second: {}, Third: {}'.format(1,2,3)
>>> print 'First: {0[0]}, Second: {0[1]}, Third: {0[2]}'.format(tup)

First: 1, Second: 2, Third: 3
First: 1, Second: 2, Third: 3
First: 1, Second: 2, Third: 3

더 나아가, '%'우리가 같은 데이터 유형을 검증하기에 유용 또한 문자열 연산자 %s, %d, %i, .format () 동안 두 변환 플래그를 지원 : '!s''!r'.


답변

>>> tup = (1, 2, 3)
>>> print "Here it is: %s" % (tup,)
Here it is: (1, 2, 3)
>>>

참고 (tup,)튜플을 포함하는 튜플이다. 외부 튜플은 % 연산자에 대한 인수입니다. 내부 튜플은 실제로 인쇄되는 내용입니다.

(tup)괄호로 묶인 표현식으로, 평가시 tup.

(tup,)뒤에 쉼표가있는 튜플은 tupas is only member를 포함합니다.


답변

이것은 문자열 형식을 사용하지 않지만 다음을 수행 할 수 있어야합니다.

print 'this is a tuple ', (1, 2, 3)

정말로 문자열 형식을 사용하려면 :

print 'this is a tuple %s' % str((1, 2, 3))
# or
print 'this is a tuple %s' % ((1, 2, 3),)

3.0 이전의 Python 버전을 사용하고 있다고 가정합니다.


답변

t = (1, 2, 3)

# the comma (,) concatenates the strings and adds a space
print "this is a tuple", (t)

# format is the most flexible way to do string formatting
print "this is a tuple {0}".format(t)

# classic string formatting
# I use it only when working with older Python versions
print "this is a tuple %s" % repr(t)
print "this is a tuple %s" % str(t)


답변

이 질문은 꽤 오래되고 다양한 답변이 있지만 여전히 imho 가장 “pythonic”이고 읽기 쉽고 간결한 답변을 추가하고 싶습니다.

일반적인 tuple인쇄 방법은 이미 Antimony에서 올바르게 표시되었으므로 Fong Kah Chun이 올바르게 표시했듯이 튜플의 각 요소를 개별적으로 인쇄하기위한 추가 사항입니다.%s 구문으로 .

흥미롭게도 주석에서만 언급되었지만 별표 연산자를 사용하여 튜플을 풀면 튜플 요소를 개별적으로 인쇄 할 때str.format 메서드를 사용하여 완전한 유연성과 가독성을 얻을 수 있습니다.

tup = (1, 2, 3)
print('Element(s) of the tuple: One {0}, two {1}, three {2}'.format(*tup))

또한 Jacob CUI가 .NET을 사용하여 회피 한 것처럼 단일 요소 튜플을 인쇄 할 때 후행 쉼표가 인쇄되는 것을 방지 replace합니다. ( 인쇄 할 때 유형 표시를 유지하려는 경우 imho 후행 쉼표 표시가 정확 하더라도 ) :

tup = (1, )
print('Element(s) of the tuple: One {0}'.format(*tup))