그래서이 문제가 있습니다. 문자열 형식으로 인쇄해야하는 튜플 (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,)
뒤에 쉼표가있는 튜플은 tup
as 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))