고정 너비 문자열을 왼쪽 정렬하는 방법은 무엇입니까?
고정 너비의 텍스트 열을 원하지만 문자열은 모두 왼쪽 대신 오른쪽으로 채워집니다 !!?
sys.stdout.write("%6s %50s %25s\n" % (code, name, industry))
생산하다
BGA BEGA CHEESE LIMITED Food Beverage & Tobacco
BHP BHP BILLITON LIMITED Materials
BGL BIGAIR GROUP LIMITED Telecommunication Services
BGG BLACKGOLD INTERNATIONAL HOLDINGS LIMITED Energy
하지만 우리는 원한다
BGA BEGA CHEESE LIMITED Food Beverage & Tobacco
BHP BHP BILLITON LIMITED Materials
BGL BIGAIR GROUP LIMITED Telecommunication Services
BGG BLACKGOLD INTERNATIONAL HOLDINGS LIMITED Energy
-
왼쪽 맞춤을 위해 크기 요구 사항을 접두사로 지정할 수 있습니다 .
sys.stdout.write("%-6s %-50s %-25s\n" % (code, name, industry))
이 버전은 str.format 메소드를 사용합니다 .
Python 2.7 이상
sys.stdout.write("{:<7}{:<51}{:<25}\n".format(code, name, industry))
Python 2.6 버전
sys.stdout.write("{0:<7}{1:<51}{2:<25}\n".format(code, name, industry))
최신 정보
이전에는 문서에서 향후 언어에서 제거되는 % 연산자에 대한 설명이있었습니다. 이 문은 문서에서 제거 되었습니다 .
sys.stdout.write("%-6s %-50s %-25s\n" % (code, name, industry))
참고로 너비를 변수로 만들 수 있습니다. *-s
>>> d = "%-*s%-*s"%(25,"apple",30,"something")
>>> d
'apple something '
-50%
대신 사용 +50%
하면 왼쪽에 정렬됩니다 ..
나는 확실히 선호 format
가 매우 유연하고 쉽게 정의하여 사용자 정의 클래스를 확장 할 수있는, 방법을 더 __format__
하거나 str
또는 repr
표현. 간단하게 유지하기 위해 print
다음 예제에서 사용 하고 있으며 sys.stdout.write
.
간단한 예 : 정렬 / 채우기
#Justify / ALign (left, mid, right)
print("{0:<10}".format("Guido")) # 'Guido '
print("{0:>10}".format("Guido")) # ' Guido'
print("{0:^10}".format("Guido")) # ' Guido '
우리는 옆에 추가 할 수 align
있습니다 지정 ^
, <
및 >
채우기 문자는 다른 문자로 공간을 대체 할
print("{0:.^10}".format("Guido")) #..Guido...
다중 입력 예제 : 많은 입력 정렬 및 채우기
print("{0:.<20} {1:.>20} {2:.^20} ".format("Product", "Price", "Sum"))
#'Product............. ...............Price ........Sum.........'
고급 예
사용자 정의 클래스가있는 경우 다음과 같이 해당 클래스 str
또는 repr
표현을 정의 할 수 있습니다 .
class foo(object):
def __str__(self):
return "...::4::.."
def __repr__(self):
return "...::12::.."
이제 !s
(str) 또는 !r
(repr)을 사용하여 파이썬에게 정의 된 메서드를 호출하도록 지시 할 수 있습니다 . 정의 된 것이 없으면 Python은 기본적 __format__
으로 덮어 쓸 수 있습니다. x = foo ()
print "{0!r:<10}".format(x) #'...::12::..'
print "{0!s:<10}".format(x) #'...::4::..'
출처 : Python Essential Reference, David M. Beazley, 4 판
새로운 인기와 함께 F-문자열 에 파이썬 3.6 , 우리가 어떻게 왼쪽 정렬 (16) 패딩 길이의 문자열 말 것입니다 :
string = "Stack Overflow"
print(f"{string:<16}..")
Stack Overflow ..
가변 패딩 길이가있는 경우 :
k = 20
print(f"{string:<{k}}..")
Stack Overflow ..
f- 문자열 이 더 읽기 쉽습니다.
이것은 내 파이썬 스크립트에서 작동했습니다.
print "\t%-5s %-10s %-10s %-10s %-10s %-10s %-20s" % (thread[0],thread[1],thread[2],thread[3],thread[4],thread[5],thread[6])
약간 더 읽기 쉬운 대안 솔루션 :
sys.stdout.write(code.ljust(5) + name.ljust(20) + industry)
ljust(#ofchars)
고정 너비 문자 를 사용하며 다른 솔루션처럼 동적으로 조정되지 않습니다.
참조 URL : https://stackoverflow.com/questions/12684368/how-to-left-align-a-fixed-width-string
'Nice programing' 카테고리의 다른 글
link_to : 확인 팝업이 두 번 표시됨 (0) | 2020.12.27 |
---|---|
MySQL 루트 비밀번호 변경 (0) | 2020.12.27 |
if (1 ||! Foo ())를 사용하는 이유가 있습니까? (0) | 2020.12.27 |
rxjs 플랫 맵 누락 (0) | 2020.12.27 |
이미지를 사용하기 위해 UITableView의 배경 (tableview 스타일은 "그룹화")을 어떻게 설정할 수 있습니까? (0) | 2020.12.27 |