Python 목록의 값으로 .csv 파일을 만들려고합니다. 목록의 값을 인쇄하면 모두 유니 코드 (?)입니다. 즉, 다음과 같이 보입니다.
[u'value 1', u'value 2', ...]
내가 목록의 값을 반복하면 for v in mylist: print v
일반 텍스트처럼 보입니다.
그리고 나는 넣을 수 있습니다 ,
서로 사이에print ','.join(mylist)
그리고 파일로 출력 할 수 있습니다.
myfile = open(...)
print >>myfile, ','.join(mylist)
그러나 CSV로 출력하고 목록의 값 주위에 구분 기호가 있습니다.
"value 1", "value 2", ...
서식에 구분 기호를 포함시키는 쉬운 방법을 찾을 수 없습니다. 예를 들어 join
문을 통해 시도했습니다 . 어떻게해야합니까?
답변
import csv
with open(..., 'wb') as myfile:
wr = csv.writer(myfile, quoting=csv.QUOTE_ALL)
wr.writerow(mylist)
편집 : 이것은 Python 2.x에서만 작동합니다.
python 3.x replace wb
와 함께 작동하게하려면 w
( 이 SO 답변 참조 )
with open(..., 'w', newline='') as myfile:
wr = csv.writer(myfile, quoting=csv.QUOTE_ALL)
wr.writerow(mylist)
답변
Alex Martelli의 보안 버전은 다음과 같습니다.
import csv
with open('filename', 'wb') as myfile:
wr = csv.writer(myfile, quoting=csv.QUOTE_ALL)
wr.writerow(mylist)
답변
다른 접근 방식의 경우 팬더 에서 DataFrame 을 사용할 수 있습니다. 아래 코드와 같이 쉽게 데이터를 CSV로 덤프 할 수 있습니다.
import pandas
df = pandas.DataFrame(data={"col1": list_1, "col2": list_2})
df.to_csv("./file.csv", sep=',',index=False)
답변
내가 찾은 가장 좋은 옵션 savetxt
은 numpy
모듈 에서를 사용하는 것 입니다 .
import numpy as np
np.savetxt("file_name.csv", data1, delimiter=",", fmt='%s', header=header)
스택해야 할 여러 목록이있는 경우
np.savetxt("file_name.csv", np.column_stack((data1, data2)), delimiter=",", fmt='%s', header=header)
답변
csv
쉼표 또는 탭으로 구분 된 파일을 읽고 쓰 려면 파이썬 모듈을 사용하십시오 . csv 모듈은 인용을 잘 제어 할 수 있기 때문에 선호됩니다.
예를 들어, 다음은 잘 작동하는 예입니다.
import csv
data = ["value %d" % i for i in range(1,4)]
out = csv.writer(open("myfile.csv","w"), delimiter=',',quoting=csv.QUOTE_ALL)
out.writerow(data)
생산 :
"value 1","value 2","value 3"
답변
이 경우 string.join 메소드를 사용할 수 있습니다.
명확성을 위해 몇 줄로 나눕니다. 여기에 대화식 세션이 있습니다.
>>> a = ['a','b','c']
>>> first = '", "'.join(a)
>>> second = '"%s"' % first
>>> print second
"a", "b", "c"
또는 한 줄로
>>> print ('"%s"') % '", "'.join(a)
"a", "b", "c"
그러나 문자열에 따옴표가 포함되어있어 문제가있을 수 있습니다. 이 경우 탈출 방법을 결정해야합니다.
CSV 모듈은 어떻게 esacpe 제어 많은 charecters에 (큰 따옴표, 또는 (단지 시세 및 seperators 만이 아닌 숫자 필드 등과 필드, 모든 필드) 다양한 인용 옵션 중 하나를 선택할 수 있도록, 당신이 모든 돌볼 수 이스케이프 된 문자열). 값이 단순하면 string.join이 정상일 수 있지만 많은 경우를 관리해야하는 경우 사용 가능한 모듈을 사용하십시오.
답변
이 솔루션은 미쳤지 만 꿀처럼 부드럽게 작동합니다.
import csv
with open('filename', 'wb') as myfile:
wr = csv.writer(myfile, quoting=csv.QUOTE_ALL,delimiter='\n')
wr.writerow(mylist)
파일은 csvwriter에 의해 작성되므로 csv 속성은 쉼표로 구분되어 유지됩니다. 구분자는 매번 목록 항목을 다음 행으로 이동하여 주요 부분에서 도움을줍니다.
