programing

Python 문자열을 공백으로 채우려면 어떻게 해야 하나요?

bestcode 2022. 9. 22. 00:29
반응형

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.6f-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

반응형