복붙노트

[PYTHON] 파이썬 목록의 값으로 .csv 파일 만들기

PYTHON

파이썬 목록의 값으로 .csv 파일 만들기

파이썬 목록의 값으로 .csv 파일을 만들려고합니다. 목록의 값을 인쇄 할 때 모두 유니 코드 (?)로 표시됩니다. 즉, 다음과 같습니다.

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

목록의 값을 반복하는 경우 즉, mylist : print v의 경우 v는 일반 텍스트로 나타납니다.

그리고 print ','를 사용하여 각각의 사이에 넣을 수 있습니다. join (mylist)

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

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

그러나 CSV로 출력하고 목록의 값을 구분 기호로 사용하고 싶습니다.

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

구분 기호를 형식에 포함시키는 쉬운 방법을 찾을 수 없습니다 (예 : 내가 조인 성명을 통해 노력했다. 어떻게해야합니까?

해결법

  1. ==============================

    1.

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

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

    파이썬 3.x와 함께 작동하게하려면 wb를 w로 바꿉니다 (이 SO 답변 참조).

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

    2.다음은 Alex Martelli의 보안 버전입니다.

    다음은 Alex Martelli의 보안 버전입니다.

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

    3.가장 좋은 옵션은 numpy 모듈의 savetxt를 사용하는 것입니다.

    가장 좋은 옵션은 numpy 모듈의 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)
    
  4. ==============================

    4.쉼표 또는 탭으로 구분 된 파일을 읽고 쓰려면 python의 csv 모듈을 사용하십시오. csv 모듈은 따옴표를 잘 제어 할 수 있기 때문에 선호됩니다.

    쉼표 또는 탭으로 구분 된 파일을 읽고 쓰려면 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"
    
  5. ==============================

    5.또 다른 방법으로는 팬더에서 DataFrame을 사용할 수 있습니다. 그리고 그것은 아래의 코드처럼 CSV에 데이터를 쉽게 덤프 할 수 있습니다 :

    또 다른 방법으로는 팬더에서 DataFrame을 사용할 수 있습니다. 그리고 그것은 아래의 코드처럼 CSV에 데이터를 쉽게 덤프 할 수 있습니다 :

    import pandas
    df = pandas.DataFrame(data={"col1": list_1, "col2": list_2})
    df.to_csv("./file.csv", sep=',',index=False)
    
  6. ==============================

    6.이 경우에는 string.join 메서드를 사용할 수 있습니다.

    이 경우에는 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 모듈은이 모든 것을 처리 할 수 ​​있으므로 다양한 인용 옵션 (모든 필드, 따옴표와 구분 기호가있는 필드, 숫자가 아닌 필드 등)과 제어 charecters (이중 따옴표 또는 큰 따옴표 포함) 사이에서 선택할 수 있습니다. 이스케이프 된 문자열). 값이 단순하다면 string.join은 아마도 괜찮을 것이지만, 많은 경우를 관리해야한다면 사용 가능한 모듈을 사용하십시오.

  7. ==============================

    7.당신은 확실히 CSV 모듈을 사용해야하지만, 기회는, 당신은 유니 코드를 작성해야합니다. 유니 코드를 작성해야하는 사용자는 util 페이지로 사용할 수있는 예제 페이지의 클래스입니다.

    당신은 확실히 CSV 모듈을 사용해야하지만, 기회는, 당신은 유니 코드를 작성해야합니다. 유니 코드를 작성해야하는 사용자는 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)
    
  8. ==============================

    8.여기에 csv 모듈을 필요로하지 않는 또 다른 솔루션이 있습니다.

    여기에 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])
    
  9. ==============================

    9.당신의 목록은 A

    당신의 목록은 A

    그런 다음 csv 파일로 가져올 다음 광고를 코딩 할 수 있습니다 (열만!).

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

    10.이 솔루션은 미친 듯이 들리지만 꿀처럼 부드럽게 작동합니다.

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

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

    csvwriter가 파일을 쓰고 있으므로 CSV 등록 정보가 유지됩니다. 즉 쉼표로 구분됩니다. 구분 기호는 매번 목록 항목을 다음 줄로 이동하여 주요 부분을 돕습니다.

  11. from https://stackoverflow.com/questions/2084069/create-a-csv-file-with-values-from-a-python-list by cc-by-sa and MIT license