2012-07-07 4 views
2

파이썬 3.2에서 처음 3 자리와 마지막 2 자리와 같이 부분으로 숫자를 분할 한 후 맨 앞에 0을 표시 할 수있는 방법이 있습니까?파이썬에서 숫자를 분할 한 후 맨 앞에 0을 표시하는 방법

Name,Code 
blackberry,20001 
wineberry,02002 
rasberry,30000 
blueberry,03010 

내 원하는 출력 :

Name,Code,Code1,Code2 
blackberry,20001,200,01 
wineberry,02002,020,02 
rasberry,30000,300,00 
blueberry,03010,030,10 

내 스크립트를

내 스크립트

내가 다음과 같습니다 csv 파일을 가지고 ... 앞에 0이없는과 숫자를 반환
import csv 
all = [] 
with open('aaa.csv','r') as csvinput: 
    with open('bbb.csv', 'w') as csvoutput: 
     reader = csv.reader(csvinput,delimiter=',') 
     writer = csv.writer(csvoutput,delimiter=",", lineterminator='\n') 
     row = next(reader) 
     row.append('Code1') 
     row.append('Code2') 
     all.append(row) 
     for row in reader: 
      row.append(row[1][0:2]) 
      row.append(row[1][-2:]) 
      all.append(row) 
     writer.writerows(all) 
     print(all) 

위 스크립트는 다음을 반환합니다.

Name,Code,Code1,Code2 
blackberry,20001,200,1 
wineberry,02002,20,2 
rasberry,30000,300,0  
blueberry,03010,30,10 

답변

6

csv.writer은 문자열을 숫자 형식으로 변환하지 않으므로 오류가 발생하지 않습니다.

Excel에서 csv 파일을 볼 때마다 가능한 한 문자열을 숫자로 변환합니다. 텍스트 편집기에서 산출물을 살펴보면 맨 앞에 0이 실제로 있음을 알 수 있습니다.

다른 사람이 지적한대로 첫 번째 슬라이스는 row[1][0:3]이어야합니다.

+2

OP의 출처에 대한 첫 번째 좋은 설명은 +1입니다! – DSM

+0

예 Excel에서 csv를보고 있습니다. 그래서 CSV로 문자열에 숫자를 유지할 수있는 방법은 없습니다. 조각에 관해서는, 그것은 실수입니다. 혼돈에 대한 미친 것입니다. – fairyberry

+0

저는 지금 Windows 머신을 사용하고 있지 않지만, CSV 파일에서 텍스트 가져 오기 마법사를 사용할 수 있다고 생각합니다. –

2

코드가이 출력을 어떻게 생성했는지 알 수 없습니다.

localhost-2:coding $ more bbb.csv 
Name,Code,Code1,Code2 
blackberry,20001,200,01 
wineberry,02002,020,02 
raspberry,30000,300,00 
blueberry,03010,030,10 

PS : 그러나

for row in reader: 
     row = [r.strip() for r in row] 
     row.append(row[1][0:3]) 
     row.append(row[1][3:]) 
     all.append(row) 

for 루프 변화 철자 오류를 정정에 관계없이 라인의 끝에서 문제를 야기 할 수있는 잘못된 공백의 작동해야로서 all를 사용 변수 이름은 나쁜 생각입니다. 그것은 매우 편리한 내장의 이름입니다.

+0

스크립트를 사용해 보았습니다. 나는 또한 모든 것을 abc로 바 꾸었지만 여전히 선행 제로는 반환하지 않는다. – fairyberry

+0

"앞에 오는 0을 반환하지 않는다"는 의미는 무엇입니까? 파일을 만드는 중입니다. 이 파일에는 0이 포함되어 있거나 그렇지 않은 파일이 있습니다. 그럴 가능성이 높습니다. @StevenRumbalski가 추측 한대로 Excel에서 파일을보고 있습니까? – DSM

+0

도움 주셔서 감사합니다. 문제 해결됨! – fairyberry