모든 '키 : 값'에 대해 한 줄씩 csv 파일에 사전 쓰기
사전이 있습니다.
mydict = {key1: value_a, key2: value_b, key3: value_c}
이 스타일로 dict.csv 파일에 데이터를 쓰고 싶습니다.
key1: value_a
key2: value_b
key3: value_c
나는 썼다 :
import csv
f = open('dict.csv','wb')
w = csv.DictWriter(f,mydict.keys())
w.writerow(mydict)
f.close()
하지만 이제 한 행에 모든 키가 있고 다음 행에 모든 값이 있습니다.
이와 같은 파일을 작성하면 새 사전으로 다시 읽고 싶습니다.
내 코드를 설명하기 위해 사전에는 textctrls 및 확인란의 값과 bool이 포함되어 있습니다 (wxpython 사용). "설정 저장"및 "설정로드"버튼을 추가하고 싶습니다. 저장 설정은 앞서 언급 한 방식으로 파일에 사전을 작성해야하며 (사용자가 csv 파일을 직접 쉽게 편집 할 수 있도록),로드 설정은 파일에서 읽고 textctrls 및 확인란을 업데이트해야합니다.
은 DictWriter
예상대로 작동하지 않습니다.
with open('dict.csv', 'w') as csv_file:
writer = csv.writer(csv_file)
for key, value in mydict.items():
writer.writerow([key, value])
다시 읽으려면 :
with open('dict.csv') as csv_file:
reader = csv.reader(csv_file)
mydict = dict(reader)
매우 간결하지만 읽을 때 유형 변환을 수행 할 필요가 없다고 가정합니다.
가장 쉬운 방법은 csv 모듈을 무시하고 직접 포맷하는 것입니다.
with open('my_file.csv', 'w') as f:
[f.write('{0},{1}\n'.format(key, value)) for key, value in my_dict.items()]
옵션을 제공하기 위해 pandas 패키지를 사용하여 csv 파일에 사전을 작성할 수도 있습니다. 주어진 예제를 사용하면 다음과 같을 수 있습니다.
mydict = {'key1': 'a', 'key2': 'b', 'key3': 'c'}
import pandas as pd
(pd.DataFrame.from_dict(data=mydict, orient='index')
.to_csv('dict_file.csv', header=False))
고려해야 할 주요 사항은 from_dict 메서드 내에서 'orient'매개 변수를 'index'로 설정하는 것입니다. 이렇게하면 각 사전 키를 새 행에 쓸 것인지 선택할 수 있습니다.
추가로, to_csv 메소드 내에서 헤더 매개 변수는 성가신 행없이 사전 요소 만 갖도록 False로 설정됩니다. to_csv 메서드 내에서 항상 열 및 인덱스 이름을 설정할 수 있습니다.
출력은 다음과 같습니다.
key1,a
key2,b
key3,c
대신 키가 열의 이름이되도록하려면 문서 링크에서 확인할 수 있으므로 'columns'인 기본 'orient'매개 변수를 사용하십시오.
outfile = open( 'dict.txt', 'w' )
for key, value in sorted( mydict.items() ):
outfile.write( str(key) + '\t' + str(value) + '\n' )
당신은 할 수 있습니다 :
for key in mydict.keys():
f.write(str(key) + ":" + str(mydict[key]) + ",");
당신이 가질 수 있도록
key_1 : value_1, key_2 : value_2
저는 개인적으로 항상 csv 모듈이 짜증나는 것을 발견했습니다. 나는 다른 누군가가 당신에게 그것을 매끄럽게하는 방법을 보여줄 것이라고 기대하지만 내 빠르고 더러운 해결책은 다음과 같습니다.
with open('dict.csv', 'w') as f: # This creates the file object for the context
# below it and closes the file automatically
l = []
for k, v in mydict.iteritems(): # Iterate over items returning key, value tuples
l.append('%s: %s' % (str(k), str(v))) # Build a nice list of strings
f.write(', '.join(l)) # Join that list of strings and write out
그러나 다시 읽으려면 짜증나는 구문 분석을 수행해야합니다. 특히 모두 한 줄에있는 경우에는 더욱 그렇습니다. 다음은 제안 된 파일 형식을 사용한 예입니다.
with open('dict.csv', 'r') as f: # Again temporary file for reading
d = {}
l = f.read().split(',') # Split using commas
for i in l:
values = i.split(': ') # Split using ': '
d[values[0]] = values[1] # Any type conversion will need to happen here
나는 멍청한 사람입니다. 또한이 댓글에 늦었습니다. 하하,하지만 다음과 같이 w.writerow (mydict)에 "s"를 추가하려고 하셨나요? w.writerows (mydict),이 문제는 저에게 발생했지만 목록에서 복수 대신 단수를 사용했습니다. 아저씨! 수정되었습니다.
import csv
dict = {"Key Header":"Value Header", "key1":"value1", "key2":"value2"}
with open("test.csv", "w") as f:
writer = csv.writer(f)
for i in dict:
writer.writerow([i, dict[i]])
f.close()
'program story' 카테고리의 다른 글
IntelliJ / Android Studio의 한 파일에 대한 잘못된 파일 연결 (0) | 2020.10.23 |
---|---|
비밀번호없이 업데이트 사용자 고안 (0) | 2020.10.23 |
IE9-10에서 SVG를 사용한 배경 크기 (0) | 2020.10.23 |
피쉬 쉘에서 환경 변수를 설정하는 방법 (0) | 2020.10.23 |
For Of 루프에서 객체 사용 (0) | 2020.10.23 |