2015-02-05 1 views
1

이상한 질문이 여기에 있습니다. 탭으로 구분 된 미리 정의 된 출력을 사용하고 있지만 탭 크기가 다양합니다. 예를 들어, 데이터는 다음과 같습니다.탭이있는 공백 서식 지정

콜론과 문자 사이의 공백 대신 \ t 문자는 제외됩니다. 레거시 코드 작업을 위해 python 형식 명령을 사용하여이 유형의 출력을 재현하려고하지만 \ t 문자를 채우기보다는 공백을 사용할 때만 작동하도록 할 수있는 것 같습니다. 여기 내 format 명령의 스케치입니다 : 다시

'{:>8}:{:>5},{:}'.format(foo, bar, do) 

, 나는 내 채우기 문자로 \ t 설정하려고했지만, 그것은 하나 개의 문자로 취급하고, 그냥 같이 탭으로 같은 양으로두고 공백은 도움이되지 않습니다.

+0

내 이해는 여러 개의 탭을 사용하는 것 외에 다른 크기의 탭이 없다는 것이 었습니다. 또한 단일 탭의 너비가 표준화되지 않은 것 같습니다 (Google에서 찾을 수는 없지만 다른 편집자가 과거에 다른 일을 한 것을 보았습니다). 일반적으로 8 칸입니다. 좀 더 명확히 해 주시면 도움이 될 수 있습니다. –

+0

그건 사실 일지 모르지만 확실히 탭이있는 공백의 탭 공간 너비가 다른 파일을보고 있습니다 (vi로 확인). – Laxsnor

+0

저는 분명히 바보예요. 그냥 VI가 멋지고 그런 식으로 보여줄뿐입니다. 저를 이끌어 주셔서 고마워요. – Laxsnor

답변

2

그래서 두 가지 부분이 있습니다 : 대상 시스템에 탭이 표시되는 방식과 형식 문자열에서 올바른 크기의 공간을 얻는 방법.

Bardi Harborow가 언급 한 바와 같이 탭 표시에 대한 일반적인 규칙은 '탭 당 8 개의 공백'입니다. 즉, 한 탭 문자는 까지 최대 개의 8 자 상당 텍스트를 대체 할 수 있습니다. 그러나 이는 종종 프로그램 단위로 구성 할 수 있습니다. 난 그냥 같은 내 Windows 명령 행에서 스크립트를 실행하는 것과 8 공간 탭과 시스템에 형식 문자열에서 하나의 탭을 사용하는 경우는 다음과 같습니다

s:  b,c 
longer: b,c 

하지만 4 공간 탭을 그것은 다음과 같습니다 '{}:\t{},{}' : 그래서

s: b,c 
longer: b,c 

, 문제에 대한 쉬운 대답 당신의 foo 문자 것도 이상 하나 개의 탭 없다는 가정하에, 당신은 단지 형식 문자열을 사용할 수 있습니다.

스크립트를 실행중인 시스템에 대한 추가 정보가 있습니까? 그러면 대화를보다 유용한 방향으로 이끌 수 있습니다.

기존의 이유로이 작업을 수행하고 있지만,이 전체 탭이 다른 컴퓨터에서 다르게 표시 될 수 있다는 점을 이해합니다. 사람들이 공간 맞춤 서식을 사용하는 이유 중 하나입니다.

+1

표준 Linux 시스템에 있습니다. 그러나 귀하의 답변은 전적으로 정확합니다. 나는 모든 foo 문자가 하나의 탭 길이보다 작다는 가정하에 작동 할 수있다. 이를 염두에두고 필자가 제안한 형식으로 서식을 전환했습니다. 이것은 가정이없이 무엇을 할 것인지에 대한 질문을 제기합니다. 공간 맞춤 서식 지정으로 전환하는 데 동의했지만 시간이 오래 걸리는 경우가 있습니다. 답변 해주셔서 감사합니다! – Laxsnor