2012-06-22 8 views
1

텍스트 파일의 단어를 (예를 들어 1) 값으로 바꾸려고 시도했지만 내 출력 파일이 비어 있습니다. 파이썬을 처음 접했습니다. 내가 그것을 배우고 나서 한달).텍스트 파일의 단어를 파이썬을 사용하여 값으로 바꾸기

내 파일이 비교적 크지 만 단어를 지금은 1로 바꾸기를 원합니다. 나는 처음에는 공백으로 #ORB을 대체 할 값 1 다음으로 단어 ATOM을 대체 할

NAME SECOND_1 

ATOM 1 6 0 0 0 # ORB 1 

ATOM 2 2 0 12/24 0 # ORB 2 

ATOM 3 2 12/24 0 0 # ORB 2 

ATOM 4 2 0 0 4/24 # ORB 3 

ATOM 5 2 0 0 20/24 # ORB 3 

ATOM 6 2 0 0 8/24 # ORB 3 

ATOM 7 2 0 0 16/24 # ORB 3 

ATOM 8 6 0 0 12/24 # ORB 1 

ATOM 9 2 12/24 0 12/24 # ORB 2 

ATOM 10 2 0 12/24 12/24 # ORB 2 

#1 

#2 

#3 

: 다음은 파일의 모습의 세그먼트입니다. 여기에 내가 지금까지 시도하고있는 것이있다.

input = open('SECOND_orbitsJ22.txt','r') 
output=open('SECOND_orbitsJ22_out.txt','w') 
for line in input: 
    word=line.split(',') 
    if(word[0]=='ATOM'): 
     word[0]='1' 
     output.write(','.join(word)) 

누구에게 제안이나 도움을 줄 수 있습니까? 정말 고마워.

+0

더 나은 답변을 위해 분명히해야 할 한 가지 사항은 파일에서 "ATOM"의 _ALL_ 어커런스 (질문 텍스트에서 제안한 바대로)를 바꾸시겠습니까, 아니면 줄의 시작 부분에 나타나는 것만 바꾸시겠습니까? 귀하의 코드)? –

답변

4

replace을 사용하십시오.

line.replace("ATOM", "1").replace("# ORB", " ") 

테스트되지 않은 코드 :

input = open('inp.txt', 'r') 
output = open('out.txt', 'w') 
clean = input.read().replace("ATOM", "1").replace("# ORB", " ") 
output.write(clean) 

Working example.

+0

게시 한 코드에 어디에서 line.replace ("ATOM", "1")을 삽입할까요? 아니면 다른 코드일까요? 죄송합니다, 저는 Python을 처음 사용합니다. –

+1

입력 = 열린 (파일); output = input.read(). replace ("ATOM", 1)은 파일의 모든 항목을 대체해야합니다 ... 각 줄을 평가할 필요가 없습니다. –

+0

outfile에서 아무 것도 변경하지 않았습니다. –

6

입력에 ATOM 뒤에 쉼표가 없으므로, word[0]ATOM과 같지 않습니다. 쉼표가 아닌 공백으로 분리해야합니다.

인자없이 split()을 사용할 수도 있습니다.

일치하는 항목이 발견되면 output.write 만 출력하므로 출력이 비어 있습니다.

P. 파일을 열 때 with 문을 사용해보십시오 : str.replace :

with open('SECOND_orbitsJ22.txt','r') as input, 
    open('SECOND_orbitsJ22_out.txt','w') as output: 
    ... 

또한, 알렉산더 교체에 적합한 도구를 제안합니다. 그러나 위치 인식이 아니므로주의해서 사용해야합니다. re.sub은보다 유연한 대안입니다.

+0

+1하면 파일을 자동으로 닫습니다. –

+0

대단히 감사합니다. –

1

여기에 붙여 넣은 파일 세그먼트에 따라 각 행을 쉼표가 아닌 공백으로 분할해야합니다. 쉼표가없는 경우 line.split(',')은 효과가없고 word[0]은 비어 있습니다. ATOM은 결코 빈 문자열과 같지 않으므로 출력 파일은 쓰지 않기 때문에 비어 있습니다.

+0

고맙습니다. –

관련 문제