programing

Python 목록의 값을 사용하여 .csv 파일을 만듭니다.

sourcejob 2022. 12. 3. 00:34
반응형

Python 목록의 값을 사용하여 .csv 파일을 만듭니다.

Python 목록의 값을 사용하여 .csv 파일을 작성하려고 합니다.리스트내의 값을 인쇄하면, 모두 Unicode(?)가 됩니다.즉, 다음과 같습니다.

[u'value 1', u'value 2', ...]

목록의 값을 반복하면 다음과 같습니다. for v in mylist: print v단순한 텍스트로 보입니다.

저는 이렇게 수 요., each의를 붙여서print ','.join(mylist)

파일로 출력할 수 있습니다.

myfile = open(...)
print >>myfile, ','.join(mylist)

단, CSV로 출력하고 목록의 값 주위에 구분 기호를 붙입니다.

"value 1", "value 2", ... 

형식 지정에 딜리미터를 포함시키는 쉬운 방법을 찾을 수 없습니다.는 이미 해 보았다.join how 될까요?★★★★★★★★★★★★★★★★★★★?

import csv

with open(..., 'wb') as myfile:
    wr = csv.writer(myfile, quoting=csv.QUOTE_ALL)
    wr.writerow(mylist)

편집: 이것은 python 2.x에서만 작동합니다.

3.x 와 하려면 python 3.x 를 하십시오.wbw(이 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모듈:

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)

Python을 합니다.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"

끈을 쓰셔도 됩니다.이 경우 결합 메서드를 사용합니다.

알기 쉽게 하기 위해 몇 줄로 나누세요.여기 인터랙티브 세션이 있습니다.

>>> a = ['a','b','c']
>>> first = '", "'.join(a)
>>> second = '"%s"' % first
>>> print second
"a", "b", "c"

또는 단일 라인으로

>>> print ('"%s"') % '", "'.join(a)
"a", "b", "c"

그러나 문자열에 따옴표가 포함되어 있다는 점이 문제가 될 수 있습니다.만약 그렇다면 어떻게 그들을 탈출시킬지 결정해야 할 것이다.

CSV 모듈에서는 이 모든 것을 처리할 수 있기 때문에 다양한 견적 옵션(모든 필드, 따옴표와 구분자가 있는 필드, 숫자 이외의 필드 등)과 charecter(큰따옴표 또는 이스케이프 문자열)를 제어할 방법을 선택할 수 있습니다.값이 단순할 경우 문자열을 입력합니다.가입은 괜찮지만 많은 엣지 케이스를 관리해야 하는 경우에는 사용 가능한 모듈을 사용하십시오.

이 솔루션은 이상하게 들리지만 꿀처럼 부드럽게 작동합니다.

import csv

with open('filename', 'wb') as myfile:
    wr = csv.writer(myfile, quoting=csv.QUOTE_ALL,delimiter='\n')
    wr.writerow(mylist)

파일은 csvwriter에 의해 작성되므로 csv 속성은 쉼표로 구분되어 유지됩니다.딜리미터는 매번 목록 항목을 다음 줄로 이동함으로써 주요 부분에서 도움이 됩니다.

주피터 노트북

예를 들어 리스트명은A

다음으로 다음을 코드화할 수 있으며 csv 파일(컬럼만 해당)로 사용할 수 있습니다.

R="\n".join(A)
f = open('Columns.csv','w')
f.write(R)
f.close()

다음은 Python 3.x에 대한 복사 붙여넣기 예이며, 사용자 고유의 딜리미터를 정의하고 문자를 따옴표로 묶는 옵션을 제공합니다.

import csv

mylist = ['value 1', 'value 2', 'value 3']

with open('employee_file.csv', mode='w') as employee_file:
    employee_writer = csv.writer(employee_file, delimiter=',', quotechar='"', quoting=csv.QUOTE_ALL)
    employee_writer.writerow(mylist)

이렇게 하면employee_file.csv다음과 같이 표시됩니다.

"value 1","value 2","value 3"

주의:

견적이 다음과 같이 설정되어 있는 경우csv.QUOTE_MINIMAL,그리고나서.writerow()는 딜리미터 또는 따옴표가 포함된 경우에만 따옴표로 필드를 묶습니다.이것이 기본 케이스입니다.

견적이 다음과 같이 설정되어 있는 경우csv.QUOTE_ALL,그리고나서.writerow()는 모든 필드를 인용합니다.

견적이 다음과 같이 설정되어 있는 경우csv.QUOTE_NONNUMERIC,그리고나서.writerow()텍스트 데이터를 포함하는 모든 필드를 따옴표로 묶고 모든 숫자 필드를 부동 데이터 유형으로 변환합니다.

견적이 다음과 같이 설정되어 있는 경우csv.QUOTE_NONE,그리고나서.writerow()따옴표로 묶는 대신 구분자를 이스케이프합니다.이 경우 excapechar 옵션파라미터 값도 지정해야 합니다.

csv 파일을 생성하여 csv 파일에 쓰려면

다음 예제에서는 csv 파일의 작성과 쓰기를 보여 줍니다.다이나믹 파일 라이터를 작성하려면 패키지 Import csv를 Import한 후 파일 참조 Ex:-를 file_writer("D:\sample.csv","w",newline=")로 파일 인스턴스를 작성해야 합니다.

여기에 언급된 파일 디렉토리와 함께 파일이 존재하지 않는 경우 python은 지정된 디렉토리에 동일한 파일을 만듭니다. "w"는 쓰기를 나타냅니다. 파일을 읽으려면 "w"를 "r"로 바꾸거나 기존 파일에 추가하려면 "a"로 대체합니다. newline="는 행을 만들 때마다 빈 행을 추가로 제거하도록 지정합니다.빈 행은 newline=csv를 사용하여 필드=["Names","Age","Class"같은 목록을 사용하여 일부 필드 이름(컬럼 이름)을 만든 다음 writer=csv와 같은 라이터 인스턴스에 적용합니다.여기서 딕트라이터(file_writer, fieldnames=fields)는 사전 라이터를 사용하여 열 이름을 CSV에 쓰기 위해 사용합니다.writeheader() 및 writer 값을 쓰기 위해 사용합니다.writerow ( { " Names " " : John " " " " " " " " " : 20 " Class " " " " " ) 。파일 값은 사전 방법을 사용하여 전달해야 합니다.여기서 키는 열 이름이고 값은 각각의 키 값입니다.

import csv 

with open("D:\\sample.csv","w",newline="") as file_writer:

   fields=["Names","Age","Class"]

   writer=csv.DictWriter(file_writer,fieldnames=fields)

   writer.writeheader()

   writer.writerow({"Names":"John","Age":21,"Class":"12A"})

덜 복잡한 솔루션을 찾고 있는 고객에게 적합합니다.실제로 이와 유사한 작업을 수행할 수 있는 심플한 솔루션이 하나 더 있습니다.

import pandas as pd
a = ['a','b','c'] 
df = pd.DataFrame({'a': a})
df= df.set_index('a').T
df.to_csv('list_a.csv', index=False)

이것 또한 도움이 되길 바랍니다.

CSV 모듈을 사용해야 하는데 Unicode를 써야 할 가능성이 높습니다.Unicode 를 쓸 필요가 있는 사용자의 경우 util 모듈로 사용할 수 있는 예제 페이지의 클래스를 다음에 나타냅니다.

import csv, codecs, cStringIO

class UTF8Recoder:
    """
    Iterator that reads an encoded stream and reencodes the input to UTF-8
    """
    def __init__(self, f, encoding):
        self.reader = codecs.getreader(encoding)(f)

def __iter__(self):
    return self

def next(self):
    return self.reader.next().encode("utf-8")

class UnicodeReader:
    """
    A CSV reader which will iterate over lines in the CSV file "f",
    which is encoded in the given encoding.
    """

def __init__(self, f, dialect=csv.excel, encoding="utf-8", **kwds):
    f = UTF8Recoder(f, encoding)
    self.reader = csv.reader(f, dialect=dialect, **kwds)

def next(self):
    row = self.reader.next()
    return [unicode(s, "utf-8") for s in row]

def __iter__(self):
    return self

class UnicodeWriter:
    """
    A CSV writer which will write rows to CSV file "f",
    which is encoded in the given encoding.
"""

def __init__(self, f, dialect=csv.excel, encoding="utf-8", **kwds):
    # Redirect output to a queue
    self.queue = cStringIO.StringIO()
    self.writer = csv.writer(self.queue, dialect=dialect, **kwds)
    self.stream = f
    self.encoder = codecs.getincrementalencoder(encoding)()

def writerow(self, row):
    self.writer.writerow([s.encode("utf-8") for s in row])
    # Fetch UTF-8 output from the queue ...
    data = self.queue.getvalue()
    data = data.decode("utf-8")
    # ... and reencode it into the target encoding
    data = self.encoder.encode(data)
    # write to the target stream
    self.stream.write(data)
    # empty queue
    self.queue.truncate(0)

def writerows(self, rows):
    for row in rows:
        self.writerow(row)

또 다른 .csv★★★★★★ 。

print ', '.join(['"'+i+'"' for i in myList])

예:

>>> myList = [u'value 1', u'value 2', u'value 3']
>>> print ', '.join(['"'+i+'"' for i in myList])
"value 1", "value 2", "value 3"

다만, 초기 리스트에 「」가 포함되어 있는 경우는, 이스케이프 할 수 없습니다.필요한 경우 함수를 호출하여 다음과 같이 이스케이프할 수 있습니다.

print ', '.join(['"'+myFunction(i)+'"' for i in myList])

언급URL : https://stackoverflow.com/questions/2084069/create-a-csv-file-with-values-from-a-python-list

반응형