2011-12-10 7 views
3

문자열을 파일에 쓰고 싶지만 지정된 길이를 갖고 싶습니다. 예를 들어 텍스트 파일에 "Atom"을 쓰고 싶습니다. 열 1-6에서 지정된 길이, 다음 구/단어, 열에서 7-11, 13-16, 다음 등 ... 텍스트 파일에 쓰고 싶습니다. random_text.txt, 도와주세요. .Python- 문자열에 지정된 너비를 더하기

감사합니다.

기본적으로, 나는 그것이 필요한 이유 :

Column 1-6 Record Name 
Column 7-11 Serial Number 
Column 13-16 ATOM name/Type 
Column 17 Alternate Location Indicator 
Column 18-20 Residue Name 
Column 22 Chainidentifier 
Column 23-26 Residue sequence number 
Column 27 Code for insertion fo residues 
Column 31-38 X-value 
Column 39-46 Y-value 
Column 47-54 Z-Value 
Column 55-60 Occupency 
Column 61-66 Temperature (Default 0.0) 
Column 73-76 Segment identifier 
Column 77-78 Element Symbol 
Column 79-80 Charge on atom 
+0

[textwrap] (http://docs.python.org/library/textwrap.html)과 같은 것을 찾고 계십니까? – miku

답변

8

Python2.6에서 이상, 당신은 str.format 방법을 사용할 수 있습니다

with open('random_text.txt', 'w') as f: 
    f.write('{0:6}{1:6}{2:4}'.format('Atom','word','next')) 

는 내용의 파일 random_text.txt를 산출을

Atom word next 

콜론 다음의 숫자는 너비를 나타냅니다. 예를 들어 {0:6}은 0 번째 인수 인 'Atom'을 너비가 6 인 문자열로 지정합니다.이 문자열은 {0:>6} 형식을 사용하여 "오른쪽 정렬"할 수 있으며 other options as well입니다. 필요한 경우 실제로 형식 문자열의 최대 폭, 필드가에 패딩됩니다 만 최소 폭을 지정할 수 없기 때문에

+0

어떻게 할 것인가? 원자는 1 ~ 6 열 너비이고 단어는 7-11이고 다음은 13-16 열입니까? – hihey

+1

너비를 지정하면 다음 열이 시작되는 위치를 간접적으로 정렬 할 수 있습니다. 예를 들어'col [0]'을 지정하면 너비가 6이고, 다음 열은 위치 7에서 시작합니다. 그러나'len (col [0]) <= 6'을주의해야합니다. 그렇지 않으면 서식이 지정된 문자열이 다음 열로 넘어가십시오. – unutbu

3
string = "atom" 
width = 6 
field = "{0:<{1}}".format(string[:width], width) 

이, widthstring을 자릅니다.

0

str.format을 사용하고 필드 너비를 정의하고 (:<width>) 데이터를 확장하십시오 (*<list>).

>>> columns = ['aaaa', 'bbbbbb', 'ccc'] 
>>> print '{:4}{:6}{:3}'.format(*columns) 

또한 .8 정밀도를 악용하여 문자열 필드를자를 수 있습니다. 처음 8은 최소 필드 너비를 설정합니다.

>>> print '{:8.8}'.format('Too long for this field') 
Too long 
관련 문제