답변:
당신은 이것을 할 수 있습니다 str.ljust(width[, fillchar])
:
길이가 width 인 문자열에 왼쪽 정렬 된 문자열을 반환합니다 . 패딩은 지정된 fillchar을 사용하여 수행됩니다 (기본값은 공백). width가보다 작은 경우 원래 문자열이 반환됩니다
len(s)
.
>>> 'hi'.ljust(10)
'hi '
복잡한 문자열을 포맷 할 때도 작동하는 유연한 방법을 사용하려면 두 방법 중 하나를 사용하여 문자열 포맷 미니 언어를 사용해야합니다.str.format()
>>> '{0: <16} StackOverflow!'.format('Hi') # Python >=2.6
'Hi StackOverflow!'
의 F-문자열
>>> f'{"Hi": <16} StackOverflow!' # Python >= 3.6
'Hi StackOverflow!'
'{message: <{fill}}'.format(message='Hi', fill='16')
str.format()
하나만 포함 된 템플릿 에는 사용하지 마십시오 {...}
. format()
함수를 사용하고 구문 분석 오버 헤드를 저장하십시오 format('Hi', '<16')
.
new (ish) 문자열 형식 메소드를 사용하면 중첩 된 키워드 인수로 재미있는 작업을 수행 할 수 있습니다. 가장 간단한 경우 :
>>> '{message: <16}'.format(message='Hi')
'Hi '
16
변수 로 전달하려면 다음 을 수행하십시오.
>>> '{message: <{width}}'.format(message='Hi', width=16)
'Hi '
전체 키트 및 kaboodle 에 변수를 전달 하려면 다음을 수행하십시오 .
'{message:{fill}{align}{width}}'.format(
message='Hi',
fill=' ',
align='<',
width=16,
)
어떤 결과를 얻었습니까?
'Hi '
당신은 이것을 시도 할 수 있습니다 :
print "'%-100s'" % 'hi'
"'%+100s'" % 'hi'
을 위해 오른쪽에 공백을 넣는 작업'hi'
이를 수행하는 올바른 방법은 공식 문서에 설명 된대로 Python의 형식 구문을 사용하는 것입니다
이 경우 간단히 다음과
'{:10}'.format('hi')
같이됩니다.
'hi '
설명:
format_spec ::= [[fill]align][sign][#][0][width][,][.precision][type]
fill ::= <any character>
align ::= "<" | ">" | "=" | "^"
sign ::= "+" | "-" | " "
width ::= integer
precision ::= integer
type ::= "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"
당신이 알아야 할 거의 모든 것이 있습니다 ^.
업데이트 : Python 3.6부터 리터럴 문자열 보간으로 훨씬 편리합니다!
foo = 'foobar'
print(f'{foo:10} is great!')
# foobar is great!
사용 str.ljust()
:
>>> 'Hi'.ljust(6)
'Hi '
당신은 또한 고려해야합니다 string.zfill()
, str.ljust()
그리고 str.center()
문자열 서식합니다. 이들은 연결될 수 있으며 ' fill '문자가 지정되어 있습니다.
>>> ('3'.zfill(8) + 'blind'.rjust(8) + 'mice'.ljust(8, '.')).center(40)
' 00000003 blindmice.... '
이러한 문자열 형식화 작업 은 Python v2 및 v3에서 작업하는 이점이 있습니다.
pydoc str
언젠가 살펴보십시오 . 거기에는 좋은 것들이 풍부합니다.
Python 3.6부터는 할 수 있습니다.
>>> strng = 'hi'
>>> f'{strng: <10}'
와 리터럴 문자열 보간 .
또는 패딩 크기가 다음과 같이 변수에있는 경우 (@Matt M. 덕분에) :
>>> to_pad = 10
>>> f'{strng: <{to_pad}}'
f'{strng: >10}'
앞에 공백을 10의 길이로 채우는 데 사용합니다. 그것은 마술입니다. 그리고 그것은 잘 문서화되어 있지 않습니다.
f'{strng:10}'
.
슬라이싱을 사용하는 것이 더 파이썬 적이 지 않습니까?
예를 들어, 10 자 길이가 될 때까지 오른쪽에 공백이있는 문자열을 채우려면 :
>>> x = "string"
>>> (x + " " * 10)[:10]
'string '
15 자 길이가 될 때까지 왼쪽에 공백으로 채우려면 :
>>> (" " * 15 + x)[-15:]
' string'
물론 얼마나 오래 패딩하고 싶은지 알아야하지만, 시작하는 줄의 길이를 측정 할 필요는 없습니다.
''.join(reversed(str))
보다 파이썬이며 str[::-1]
, 우리 사실이 아니에요 모두 알고.
(x + " " * 10)[:10]
내 의견으로는을 사용하는 것보다 훨씬 복잡 x.ljust(10)
합니다.
다양한 인쇄 형식 대신 사용하는 좋은 방법 :
(1) 오른쪽에 공백이있는 패드 :
('hi' + ' ')[:8]
(2) 왼쪽에 선행 0이있는 패드 :
('0000' + str(2))[-4:]
min_len = 8
후 ('hi' + ' '*min_len)[:min_len]
또는('0'*min_len + str(2))[-min_len]
('0'*min_len + str(2))[-min_len:]
는 재미를 위해서 일 뿐이지 만 다른 대답을 권장합니다.
당신은리스트 이해를 사용하여 그것을 할 수 있습니다.
"hello" + " ".join([" " for x in range(1,10)])
output --> 'hello '
s = "hi"
; s + (6-len(s)) * " "
대신 (이 때 괜찮습니다 그러나 정확한 문제를 해결하는 프레임 워크 기능을 사용하는 답변은 유지하기가 더 쉬울 것입니다 (다른 답변 참조)
"%-6s" % s
왼쪽 정렬 및"%6s" % s
오른쪽 정렬에 대한 이 오래된 방법을 여전히 좋아합니다 .