Преобразование excel или csv в список или словарь, или word doc в список на python

#python #excel #list #csv #dictionary

#python #excel #Список #csv #словарь

Вопрос:

Я хочу, чтобы моим конечным результатом был словарь, подобный приведенному ниже.

mydict = {0:'term1', 1:'term2',...'159:'term160'}

У меня есть csv, который содержит один столбец данных, с несколькими словами в каждой ячейке единственной строки столбца.

Пока ни одно из предложений, которые я нашел здесь, не помогло. Ближе всего я подошел к тому, что одна формула создала несколько упорядоченных словарей, которые из моего одного столбца создали словари, подобные приведенным ниже:

 {['term1'], ['term2']}
{['term1'], ['term3']}
{['term1'], ['term4']}
  

Итак, вместо этого я подумал, что просто создам список из столбца. При использовании приведенного ниже кода, вместо того, чтобы получать что-то вроде ['term1', 'term2', 'term3',...'term160'] , я вместо этого получил [['term1'],['term2'],...['term160']] , который в сочетании с my_list2 = list(range(0, 160)) via my_dict = dict.fromkeys(my_list_numbers, my_list_terms) распечатал словарь каждого числа в диапазоне, совпадающем со всей [['term1'],['term2'],...['term160']]

 import csv

with open('filename.csv') as file:
    reader = csv.reader(file)
    data = list(reader)

print(data)
  

Мне просто нужен либо словарь, либо список строк, которые я могу превратить в словарь, чтобы мне не приходилось вводить несколько словарей по 100 пар в каждом. Я гуглил и экспериментировал больше часа. Я относительно новичок в программировании, но я чувствую, что не должно быть так сложно извлечь список строк из excel, csv, word или текстового документа. Или просто отформатируйте это из списка, который я вставляю в ячейку, даже.

Любая помощь будет принята с благодарностью.

Комментарии:

1. Пожалуйста, предоставьте образец данных csv и соответствующие желаемые выходные данные. Спасибо.

2. @Argileon, предполагая, что ваши данные представляют собой один столбец и что вы рассматриваете выходные данные как список, попробуйте следующее {idx:value[0] for idx, value in enumerate(data)}

Ответ №1:

Предполагая, что данные в файле temp.csv следующим образом:

 this_is_r1
this_is_r2
this_is_r3
this_is_r4
  

Вы можете написать свой код как:

 import os
os.chdir("/home/username/Downloads")

res= dict()

with open("temp.csv", "r") as f:
    for k,x in enumerate(f):
        res[k] = x.replace("n","")

print(res)
  

Вывод:

 {0: 'this_is_r1', 1: 'this_is_r2', 2: 'this_is_r3', 3: 'this_is_r4', 4: 'this_is_r5', 5: 'this_is_r6'}
  

Как предложил Мигель Трехо, вы также можете использовать понимание словаря как:

 with open("temp.csv", "r") as f:
    res={k:x.replace("n","") for k,x in enumerate(f)}

print(res)