Programing

공백으로 파이썬 문자열을 채우려면 어떻게해야합니까?

lottogame 2020. 2. 16. 19:13
반응형

공백으로 파이썬 문자열을 채우려면 어떻게해야합니까?


공백으로 문자열을 채우고 싶습니다. 나는 다음이 0에 대해 작동한다는 것을 알고 있습니다.

>>> print  "'%06d'"%4
'000004'

그러나 이것을 원할 때 어떻게해야합니까? :

'hi    '

물론 문자열 길이를 측정하고 할 수 str+" "*leftover는 있지만 가장 짧은 방법을 원합니다.


당신은 이것을 할 수 있습니다 str.ljust(width[, fillchar]):

길이가 width 인 문자열에 왼쪽 정렬 된 문자열을 반환합니다 . 패딩은 지정된 fillchar을 사용하여 수행됩니다 (기본값은 공백). width가보다 작은 경우 원래 문자열이 반환됩니다 len(s).

>>> 'hi'.ljust(10)
'hi        '

파이썬 2.5를 지원할 필요가 없다면, 다음과 같이 문자열 형식의 미니 언어 를 사용할 수 있습니다.

'{0: <16}'.format('Hi')

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'

이를 수행하는 올바른 방법은 공식 문서에 설명 된대로 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}}'

문자열을 가운데에 놓을 수도 있습니다 .

'{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'

물론 얼마나 오래 패딩하고 싶은지 알아야하지만, 시작하는 줄의 길이를 측정 할 필요는 없습니다.


당신은 목록 이해를 사용하여 그것을 할 수 있습니다, 이것은 당신에게 공간의 수에 대한 아이디어를 줄 것이고 하나의 라이너 일 것입니다.

"hello" + " ".join([" " for x in range(1,10)])
output --> 'hello                 '

다양한 인쇄 형식 대신 사용하는 좋은 방법 :

(1) 오른쪽에 공백이있는 패드 :

('hi' + '        ')[:8]

(2) 왼쪽에 선행 0이있는 패드 :

('0000' + str(2))[-4:]

+ =는 문자열에 추가하는 데 사용할 수 있습니다

>>> string = 'hi'
>>> for s in range(0,5):
...    string += ' '
... 
>>> string
'hi          '

참고 URL : https://stackoverflow.com/questions/5676646/how-can-i-fill-out-a-python-string-with-spaces



반응형