2016-07-20 3 views
0

나는이 코드를 실행 ... 내 CSV 파일 내부에 다음과 같은 출력을 얻을 파이썬 OrderedDict : 제거 빈 줄

from simple_salesforce import Salesforce 
sf = Salesforce(username='un', password='pw', security_token='tk') 
cons = sf.query_all("SELECT Id, Name FROM Contact WHERE IsDeleted=false LIMIT 2") 

import csv 

with open('c:\test.csv', 'w') as csvfile: 
    fieldnames = ['contact_name__c', 'recordtypeid'] 
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames) 

    writer.writeheader() 
    for con in cons['records']:  
     writer.writerow({'contact_name__c': con['Id'], 'recordtypeid': '082I8294817IWfiIWX'}) 

print('done') 

...

contact_name__c,recordtypeid 

xyzzyID1xyzzy,082I8294817IWfiIWX 

abccbID2abccb,082I8294817IWfiIWX 

는 잘 모르겠어요 왜 그 여분의 줄이 있는지.

CSV 파일을 정상적으로 볼 수 있도록 제거하는 데 유용한 정보가 있습니까?

나는 파이썬 3.4.3에 따라 sys.version_info에 따라 있습니다.

from simple_salesforce import Salesforce 
sf = Salesforce(username='un', password='pw', security_token='tk') 
print(sf.query_all("SELECT Id, Name FROM Contact WHERE IsDeleted=false LIMIT 2")) 

OrderedDict([('totalSize', 2), ('done', True), ('records', [OrderedDict([('attributes', OrderedDict([('type', 'Contact'), ('url', '/services/data/v29.0/sobjects/Contact/xyzzyID1xyzzy')])), ('Id', 'xyzzyID1xyzzy'), ('Name', 'Person One')]), OrderedDict([('attributes', OrderedDict([('type', 'Contact'), ('url', '/services/data/v29.0/sobjects/Contact/abccbID2abccb')])), ('Id', 'abccbID2abccb'), ('Name', 'Person Two')])])]) 

을 생산 : 여기

내가 함께 일하고 있어요 데이터의 종류를 보여주기 위해 몇 가지 더 코드 및 출력 쌍입니다
from simple_salesforce import Salesforce 
sf = Salesforce(username='un', password='pw', security_token='tk') 
cons = sf.query_all("SELECT Id, Name FROM Contact WHERE IsDeleted=false LIMIT 2") 
for con in cons['records']: 
    print(con['Id']) 

xyzzyID1xyzzy 
abccbID2abccb 
+2

가능한 중복 작성 : 도스 스타일의 라인 엔딩 시도 제거

with open('c:\test.csv', 'w', newline='') as csvfile: 

:

함께 현재 with open 라인을 대체 파이썬 3에서 바이너리 모드로 파일을 열려면 파이썬과 함께 각 행 사이에 빈 줄이있다] (http://stackoverflow.com/questions/3348460/csv-file-written-with-python-has-blank-lines-between-eachrow) –

+0

고마워, 저것을 찾지 못했을 것입니다. 아마 내가 "명령에 의한 명령"을 내 수색에 넣었 기 때문일 것입니다. –

답변

1

가능성이 두 가지 가능성 : 출력 파일을 이진 모드로 열어야하며 작성자가 DOS 스타일 줄 끝을 사용하지 않도록해야합니다.

writer = csv.DictWriter(csvfile, fieldnames=fieldnames, lineterminator="\n") 
가 [CSV 파일의
+0

감사합니다 - 제안 사항 중 하나와 둘 다 함께 사용합니다. 관찰 : Helios Software Solutions의 "Textpad"에서 열 때, "ctrl + a"를 강조 표시 할 때 각 출력 파일의 끝에는 2 줄의 공백이 있지만 여분의 끝 패딩은 없습니다 말하자면, 텍스트를 따라 커서를 옮기거나 선 끝을 넘어서 클릭하십시오. "both-and"출력에는이 소프트웨어에서 "ctrl + a"강조 표시 오버 슛 공간 1 개와 다시 "인식 가능한"공백이 없습니다. 3 명 모두가 Excel에서 육안으로 같은 것을 열어 본다. 내 생각에 효과가있을 것이다. –

+1

당신을 진심으로 환영합니다. 예, 많은 것들이 환경에 달려 있습니다. 플랫폼에 따라 라인 엔딩에 대한 가정이 다르며, 다른 편집기는 다양한 유형의 라인 엔딩을 다양한 방식으로 처리합니다. DOS 스타일의 줄 끝은 Linux/UNIX/Mac/BSD/등이 사용하는 문자가 아닌 두 문자를 사용합니다. – Feneric