2012-09-28 3 views
10

몇 가지 보고서를 작성 중이며 다음과 같은 동작을 얻을 수있는 간단한 방법이 있는지 알고 싶습니다.중첩 문자열 형식

>>> '{:-^60}'.format('Percentage used: {:.2%}'.format(.4)) 
'------------------Percentage used: 40.00%-------------------' 

당신은 내가 텍스트를 중심으로 다음 백분율 형식의 숫자를 인쇄하고 있습니다 볼 수 있듯이. 하지만 다른 내부에 형식 함수를 사용하고 있습니다. 가능한 경우 다음과 같은 단일 함수에서 동일한 작업을 수행하려고합니다. 나는 일반적인 솔루션을 찾고 있어요 물론

'$SOMETHING GOES HERE'.format(header = 'Percentage Used:',percentage = .4) 

는, 즉, 형식화하는 옵션뿐만 아니라 정렬

덕분에, 대부분의 모든 작업, 또는 것입니다.

+2

수 있습니다. 상상해보십시오. 두 개의 숫자 쌍을 형식화하고, 적어도 3 개의 문자를주고, 전체 쌍을 최소한 10 개 이상으로 만들고 싶다고 상상해보십시오.''{: 10} ''이외의 문자를 쓰는 방법을 볼 수 없습니다. .format ('({: 3}, {: 3}). 형식 (1,2))'. 여기도 마찬가지입니다. 특정 요소가 아닌 가운데 정렬해야하는 전체 문자열이므로 형식이 지정된 문자열을 형식화해야합니다. @wim이 맞다면'center'는 아마도 더 읽기 쉽지만 실제로는 동등합니다. – abarnert

+0

고마워, 대부분 나는 몇 가지 아이디어를 찾고있다. 어떻게 할 수 있는지는 모르지만 다른 기능이나 무언가가 트릭을 할 수 있습니다. @wim의 것과 같습니다. 그러나 나는 내가하고 싶은 것은 포맷 기능 자체에 의해 제한된다고 생각한다. – Darkade

+0

내장 된'format'보다 더 강력하고 유연한 (그러나 복잡하지 않은) 무언가를 찾고 있다면,'format'이 논의 될 몇 년 전부터 사람들은 모든 종류의 대안을 제안하고 라이브러리를 코딩했습니다 그것들은 대부분을 구현했습니다. PyPI 및 ActiveState 레서피 컬렉션을 검색해보십시오. (PyPI가 아직 개발 중에 있었기 때문에) 아마도 여러분이 필요한 것을 찾을 수 있습니다. (나는 특별한 권고 사항을 가지고 있지 않다.) – abarnert

답변

8

더 읽을 수있는 옵션은 문제가 본질적으로 중첩 된 것 같습니다 str.center

>>> 'Percentage used: {:.2%}'.format(.4).center(60, '-') 
'------------------Percentage used: 40.00%-------------------' 
+2

고마워요, 바로 그 문제를 해결합니다. 그러나 그것은 아주 일반적이지 않습니다. 그러나 @abarnert가 주석을 달았 기 때문에, 내가하고 싶은 것은 아마 본질적으로 중첩 된 것입니다. – Darkade