Python 문자열을 공백으로 채우려면 어떻게 해야 하나요?
문자열을 공백으로 채우고 싶습니다.다음 사항이 0에 대해 유효하다는 것을 알고 있습니다.
>>> print "'%06d'"%4
'000004'
하지만 이걸 원할 때는 어떻게 해야 하나요?
'hi '
물론 나는 줄의 길이를 측정할 수 있고str+" "*leftover
하지만 가장 빠른 길로 가고 싶어요.
이 조작은, 다음과 같이 실시할 수 있습니다.
길이 너비의 문자열에서 줄 바꿈 문자열이 반환됩니다.패딩은 지정된 fillchar를 사용하여 이루어집니다(기본값은 공백).너비가 다음 값보다 작을 경우 원래 문자열이 반환됩니다.
len(s)
.
>>> 'hi'.ljust(10)
'hi '
복잡한 문자열을 포맷할 때에도 기능하는 유연한 방법에는 문자열 포맷의 미니 언어를 사용하는 것이 좋습니다.
어느 하나의 f-module을 사용하여
>>> f'{"Hi": <16} StackOverflow!' # Python >= 3.6
'Hi StackOverflow!'
또는 방법
>>> '{0: <16} StackOverflow!'.format('Hi') # Python >=2.6
'Hi StackOverflow!'
새로운(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 '
이 모든 것에 대해 파이썬 3.6+ f-string을 사용할 수 있습니다.
message = 'Hi'
fill = ' '
align = '<'
width = 16
f'{message:{fill}{align}{width}}'
그리고 물론 그 결과는 다음과 같습니다.
'Hi '
다음과 같이 시험해 보십시오.
print "'%-100s'" % '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!
사용방법:
>>> 'Hi'.ljust(6)
'Hi '
문자열 포맷에 대해서는및 을 고려해야 합니다.이것들은 체인으로 할 수 있어 「fill」문자를 지정할 수 있습니다.이렇게 하면 다음과 같습니다.
>>> ('3'.zfill(8) + 'blind'.rjust(8) + 'mice'.ljust(8, '.')).center(40)
' 00000003 blindmice.... '
이러한 문자열 형식 지정 작업은 Python v2 및 v3에서 작동할 수 있는 이점이 있습니다.
언젠가 한번 보세요.그 안에는 좋은 물건들이 많이 있습니다.
Python 3.6에서는 다음과 같이 할 수 있습니다.
>>> strng = 'hi'
>>> f'{strng: <10}'
또는 패딩 사이즈가 변수일 경우 다음과 같이 됩니다(@Matt M. 감사합니다).
>>> to_pad = 10
>>> f'{strng: <{to_pad}}'
TL;DR
text = 'hi'
print(f'{text:10}') # 'hi '
자세한 설명
부터Python3.6
f-param 문자 보간법을 사용할 수 있습니다.
가변 공간:
value = 4
space = 10
# move value to left
print(f'foo {value:<{space}} bar') # foo 4 bar
# move value to right
print(f'foo {value:>{space}} bar') # foo 4 bar
# center value
print(f'foo {value:^{space}} bar') # foo 4 bar
고정 공간:
value = 4
# move value to left
print(f'foo {value:<10} bar') # foo 4 bar
# move value to right
print(f'foo {value:>10} bar') # foo 4 bar
# center value
print(f'foo {value:^10} bar') # foo 4 bar
다른 문자를 공백으로 채우려면 처음에 지정합니다.
value = 4
space = 10
padd = '_'
print(f'foo {value:{padd}^{space}} bar') # foo ____4_____ bar
print(f'foo {value:_^10} bar') # foo ____4_____ bar
스트링의 중심을 잡을 수도 있습니다.
'{0: ^20}'.format('nice')
문자열에는 Python 2.7의 미니 포맷을 사용합니다.
'{0: <8}'.format('123')
이 왼쪽은 정렬되어 ' '와 함께 8자로 패드가 채워집니다.
0을 삭제하기만 하면 공간이 추가됩니다.
>>> print "'%6d'"%4
슬라이스를 사용하는 것이 더 비토닉하지 않을까요?
예를 들어 오른쪽에 공백이 있는 문자열을 10자까지 채우려면 다음 절차를 수행합니다.
>>> x = "string"
>>> (x + " " * 10)[:10]
'string '
왼쪽에 공백이 있는 패드를 15자까지 채우려면
>>> (" " * 15 + x)[-15:]
' string'
물론 패딩 시간을 알아야 하지만 시작할 줄의 길이를 측정할 필요는 없습니다.
다양한 인쇄 형식 대신 사용할 수 있는 좋은 방법:
(1) 오른쪽에 공백이 있는 패드:
('hi' + ' ')[:8]
(2) 왼쪽에 선행 0이 있는 패드:
('0000' + str(2))[-4:]
목록 이해 기능을 사용하여 이 작업을 수행할 수 있습니다. 이렇게 하면 공간의 수에 대해 알 수 있고 하나의 라이너가 될 수 있습니다.
"hello" + " ".join([" " for x in range(1,10)])
output --> 'hello '
언급URL : https://stackoverflow.com/questions/5676646/how-can-i-fill-out-a-python-string-with-spaces
'programing' 카테고리의 다른 글
'for' 루프에서 인덱스 액세스 (0) | 2022.09.23 |
---|---|
자바처럼 C#에 shrows 키워드가 있나요? (0) | 2022.09.22 |
symfony2를 사용하여 form_rest()가 필드를 표시하지 않도록 하려면 어떻게 해야 합니까? (0) | 2022.09.22 |
브라우저 창이 아래로 스크롤되는지 여부를 감지하는 방법 (0) | 2022.09.22 |
Mac에서 Java로 프로그램을 컴파일하고 실행하려면 어떻게 해야 합니까? (0) | 2022.09.22 |