簡體   English   中英

使用 csv 文件中的行號創建字典 [Python]

[英]Create a dictionary using the row number in a csv file [Python]

我有一個包含 60 名參與者的調查數據的 CSV 文件。 第一列是參與者的編號,每個編號對應從該參與者收集的所有數據。 它看起來像:

參與者人數:1,性別:女性,學習水平:研究生

我想創建一個字典,其中鍵是參與者編號,值是包含所有數據的整個行,具有如下內容:

{1:女性,研究生,美國人,是,否,否,是,是,否...}等等。 我仍然是新手,到目前為止這是我嘗試過的:

with open('surveys.csv', 'r') as f:
    reader = csv.reader(f, delimiter=' ')
    with open('new_surveys.csv', mode='w') as outfile:
            writer = csv.writer(outfile)
            mydict = {rows[0]:rows for rows in reader}
            print(mydict)

但這會打印出類似的內容:

{'\"': ['\"'], '參與者/問題","1.': ['參與者/問題","1.', '性別'], ',2.': [ ',2.', 'Level', 'of', 'study'],} 目前對我來說沒有任何意義......

謝謝!

編輯:

這是一行完整的數據:

一行完整的數據,還有 59 個,但它們看起來都一樣,唯一的區別是是/否或一天中的時間

你可以試試這個嗎?

import csv
with open('surveys.csv', 'r') as f:
    reader = csv.reader(f, delimiter=' ') 
    mydict={}
    iterreader = iter(reader)
    next(iterreader)
    for row in iterreader:
        elementsList=row[0].split("\t")
        nonEmptyElements=[]
        for element in elementsList[1:]:
            print(element)          
            if(not element.strip()==""):
                nonEmptyElements.append(element)
        valuesList=",".join(nonEmptyElements)
        mydict[elementsList[0]]=valuesList
print(mydict)  

我的 CSV 看起來像這樣

Participant Name    Gender
1   Rupin   Male
2   Poonam  Female
3   Jeshan  Male

該代碼避免使用第一行。

我的輸出看起來像這樣

{'1': 'Rupin,Male', '2': 'Poonam,Female', '3': 'Jeshan,Male'}

注釋中,我們知道原始文件的前 100 個字節是:

b'\xef\xbb\xbf"\nParticipant/Question","1. Gender\n","2. Level of study\n","3. How often visit SC\n","4. Time of vi' 

這看起來像是從 Excel 導出的 csv,在單元格中嵌入了換行符。 b'\\xef\\xbb\\xbf'是字節序標記,表示字節被編碼為'utf-8-sig'。

根據此信息,此代碼應創建所需的字典:

with open('surveys.csv', 'r', encoding='utf-8-sig') as f:
    reader = csv.reader(f, dialect='excel')
    # Advance the iterator to skip the header row
    next(reader)
    mydict = {row[0]:row for row in reader}
print(mydict)

傳遞 'utf-8-sig' 編碼可確保字節順序標記不會被視為數據的一部分。 如果您使用 Excel,那么在讀寫 csv 文件時設置此編碼可能是個好主意。

dialect='excel'傳遞給讀取器會告訴它使用與 Excel 創建的 csv 文件關聯的默認值,例如使用逗號作為分隔符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM