2012-04-29 3 views
0

나는 파이썬으로 분류자를 만들었고 잘 동작한다. 이제 결과를 텍스트 파일로 출력해야하는데 문제없이 수행 할 수 있습니다. 문제는 결과 자체뿐만 아니라 결과의 ID도 포함시켜야한다는 것입니다. 필자는 파이썬에 익숙하지 않고 여전히 구문에 익숙해 지므로 어떤 도움이 크게 감사 할 것입니다.파이썬에서 값을 추가하고 파일에 쓰는 것

printedRow = '{id1},{result1}'.format(id1=id , result1 = result) 
    print("~~~~~RESULT~~~~~") 

    for k in range(0,len(pans)): 
     pans.append(row[0] + ','+ p.classify(row)) 

    print (pans) 
    print(pans, file=outfile) 

분류기의 결과에 포함해야하는 ID는 색인 행 [0]에 보관됩니다. 이 코드를 실행하면 모든 결과와 동일한 id가 인쇄됩니다. 결과는 잘 인쇄되고 있으며, 결과와 ID를 일치시킬 수 있어야합니다.

둘 다 목록에 저장되며 각 목록에는 약 2000 개의 값이 있습니다.

+3

우리가 작업하는 것을 볼 수 있도록 팬 및 행의 값을 제공 할 수 있습니까? –

+0

팬에는 분류 자 ​​결과가 포함되어 있으므로 '<=50k','> 50k'또는 'unknown'중 하나 일 수 있습니다. 행의 값은 'id1', 'id453'과 같습니다. – Hiky

+0

죄송합니다. 실제 값은 중요하지 않습니다. 중요한 것은 데이터 구조, 목록입니까? 이 코드를 실행하기 시작할 때 몇 개의 값이 포함됩니까? 또한 답을 편집하여 정보를 제공하는 것이 가장 쉽습니다. –

답변

0

row 또는 pans이 무엇인지 정의하지 않았기 때문에 무엇을 하려는지 확실하지 않습니다. 더 많은 Pythonic 소스 코드 사용을 고려하십시오. 객체가 어떤 타입의 콜렉션이라면, 어떤 종류의 반복자를 사용하십시오. 열거 형은 각 루프에 인덱스 번호를 부여하는 데 유용합니다.

for n, p in enumerate(pans): 
    print "pan %d is %s" % (n, p) 

는 또한 크기가 pans에 따라 루프 내에서 pans에 추가 한 것으로 나타났습니다. 그것은 영원히 계속 될 수 있었다!

방금 ​​추가, 목록에 추가 할 경우, 예컨대 :

newpans = pans + [x.classify(row) for x in oldpans] 

는 오히려 다음, 메모리 구조를 구축 파일로 인쇄하는 대신 파일에 직접 작성합니다. 이것은 훨씬 적은 메모리를 사용합니다. 속도를 원하면 컴퓨터가 파일을 버퍼링하도록합니다 (예 :

f = open("output.txt", "w") 
for n, p in enumerate(pans): 
    f.write("%s,%s\n" % (n, classify(p))) 
f.close() 
관련 문제