2014-04-05 2 views
2

제 목표는 사전을 파이썬으로 만드는 것입니다. 나는 두 열을 포함하는 .csv 파일을 가지고 있는데, 첫 번째 단어는 '단어'이고 다른 하나는 '의미'입니다. 나는 사전 형식으로 CSV 파일을 읽고 '단어'가 주어지면 '의미'를 얻으려고합니다.사전 만들기

'단어'의 가치를 얻는 방법을 알려주시겠습니까? 이것이 내가 뭘하려 :

내 코드는,

>>> with open('wordlist.csv', mode = 'r') as infile: 
...  reader = csv.reader(infile) 
...  with open('wordlist.csv', mode = 'w') as outfile: 
...   writer = csv.writer(outfile) 
...   mydict = {rows[0]:rows[1] for rows in reader} 
...  print(mydict) 
... 

을 그 결과, 밝혀 I이었다 시도

{} 

다음 하나,

>>> reader = csv.reader(open('wordlist.csv', 'r')) 
>>> d = {} 
>>> for row in reader: 
...  k, v = row 
...  d[k] = v 
... 

그러나 이것을 사용하고 싶을 때 결과는 다음과 같았습니다.

>>> d['Try'] 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
KeyError: 'Try' 

I이었다 시도 다음 코드

>>> reader = csv.DictReader(open('wordlist.csv')) 
>>> result = {} 
>>> for row in reader: 
...  key = row.pop('word') 
...  if key in result: 
...   pass 
...  result[key] = row 
...  print result 
... 

그것은 전혀 나에게 어떤 대답을하지 않았다.

>>> for row in reader: 
...  for column, value in row.iteritems(): 
...   result.setdefault(column, []).append(value) 
...  print result 
... 

이 나에게 결과를주지 않았다 나도.

+0

상단에 헤더 행이 있습니까? 얼마나? 가능한 경우 읽으려는 CSV 파일의 상단에서 몇 줄의 예를 제공하십시오. 그게 왜 작동하지 않는지 알 수 있습니다. –

+2

첫 번째 코드는 'final_word.csv' 파일을 열어 읽은 다음 다시 열어 * writing * 파일을 열어 파일의 내용을 지 웁니다. 그건 네가 원하는 것처럼 보이지 않아. – DSM

+0

실제로, DSM이 지적한 문제에 비추어 볼 때, 나는 그 파일이 나중의 테스트에서 비어 있다고 의심합니다! 백업 복사본을 준비해줬으면합니다. 파일의 내용이 무엇인지에 따라 최신 버전의 코드가 작동하거나 작동하지 않을 수 있습니다. 예를 들어 헤더 행이 있습니까? 중복 된 '단어'값을 가지고 있습니까 (그렇다면 어떻게 처리할까요?)? – Blckknght

답변

1

팬더를 사용합니다. 그런 다음 zip 2를 사용하여 사전을 만들 수 있습니다. 파일이 헤더 행이없는 경우

import pandas as pd  

df = pd.read_csv('wordlist.csv') 
words = list(df.word) 
meaning = dict(zip(df.word, df.meaning)) 

, 그건 괜찮습니다. 그냥 각 열에 여전히 참조 할 수있는 몇 가지 이름이 주어집니다.

대체 :

import pandas as pd  

df = pd.read_csv('wordlist.csv') 
dictionary = {} 

for w, s, m, p in zip(df.words, df.meaning): 
    dictionary[w] = [m, p] 
+0

@ user3458145 몇 가지 코드를 추가했습니다. – cdhagmann

1

는 "final_word.csv"는 다음과 같습니다 경우

word1, synonym1, meaning1, POS_tag1 
word2, synonym2, meaning2, POS_tag2 

이 사전로 읽어됩니다

with open("final_word.csv",'r') as f: 
    rows = f.readlines() 

dictionary = {} 
for row in rows: 
    row = row.strip() 
    word, synonym, meaning, POS_tag = row.split(", ") 
    dictionary[word] = [synonym, meaning, POS_tag] 

print(dictionary['word1']) 
#out>> ['synonym1', 'meaning1', 'POS_tag1'] 
print(dictionary['word2'][0]) 
#out>> synonym2 

strip()은 줄 바꿈을 제거하는 데 사용됩니다. "\ n" 각 CSV 행의 끝에

+0

답장을 보내 드려 죄송합니다.이것은 유용하게 들리지만,이 경우 다음과 같은 구문 오류가 발생합니다. 파일 "", 줄 5 인쇄 사전 [ 'Psychoanalysis'] ^ 구문 오류 : 잘못된 구문 – user3458145

+0

[this] http://stackoverflow.com/a/13961161/2808954) –

+0

감사합니다. 파이썬 2.7 있습니다. 저는 성명서로 인쇄물을 사용해야합니다. 하지만이 '인쇄 사전'[ '정신 분석'] '을 시도 할 때 나는 필요한 결과를 얻지 못하고 있습니다. 올바른 구문은 무엇일까요? – user3458145