나는이처럼 내 터미널 창에서 스크립트에서 일부 값을 인쇄하고 있습니다 :파이썬의 텍스트를 터미널의 열에 어떻게 정렬합니까?
for i in items:
print "Name: %s Price: %d" % (i.name, i.price)
어떻게 열들로이 라인을 어떻게해야합니까?
나는이처럼 내 터미널 창에서 스크립트에서 일부 값을 인쇄하고 있습니다 :파이썬의 텍스트를 터미널의 열에 어떻게 정렬합니까?
for i in items:
print "Name: %s Price: %d" % (i.name, i.price)
어떻게 열들로이 라인을 어떻게해야합니까?
두 열에있는 데이터의 최대 길이를 알고있는 경우 형식 한정자를 사용할 수 있습니다. 예를 들어 이름은 최대 20 개 문자 긴 경우 가격이 탭 (일부 상황에서 예를 들어, 경우 하나를 일치하지 않습니다 당신이이 탭을 사용하는 것보다 더 나은
print "Name: %-20s Price: %10d" % (i.name, i.price)
할 수있는 10 개 문자에 맞는 이름은 다른 것보다 상당히 길다).
일부 이름이 사용 가능한 공간에 맞지 않으면 .
형식 한정자를 사용하여 데이터를자를 수 있습니다. 예를 들어 이름 형식에 "% -20.20s"를 사용하면 긴 이름이 20 자 열에 맞게 잘립니다.
Vinay가 말한 것처럼 문자열 형식 지정자를 사용합니다. 당신이 최대 길이를 알 수없는 경우
, 당신은 목록을 추가로 통과함으로써 그들을 찾을 수 있습니다
이maxn, maxp = 0, 0
for item in items:
maxn = max(maxn, len(item.name))
maxp = max(maxp, len(str(item.price)))
다음 대신 수의 '*'
를 사용하고 인수로 계산 폭을 제공합니다.
for item in items:
print "Name: %-*s Price: %*d" % (maxn, item.name, maxp, item.price)
str 개체에 rjust()/ljust() 메서드를 사용할 수도 있습니다.
우수. 내가 파이썬에서 거의 사용하지 않는 함수에 대한 또 다른 알림. 이 문제는 나 자신이 먼저 있었고 탭으로 수정했습니다. 이제 되돌아 가서 내 코드를 읽기 쉽게 만들 수 있습니다. –