Как создать словарь на основе файла CSV - PullRequest
0 голосов
/ 16 октября 2018

У меня есть файл CSV в следующем формате:

#ID #Number #Date #Name #Email
1978 26   24/4/10 Jim  Jim@randomemail.com
1328 31   22/7/10 Jim  Kim@randomemail.com
1908 26   21/4/10 Jim  Dim@randomemail.com
1918 26   29/4/10 Jim  Rim@randomemail.com
1938 46   24/4/10 Jim  Lim@randomemail.com

Я открыл файл CSV и распечатал его уже.

Теперь я хочу сделать его таким, чтобы он был превращен всловарь, такой как: [ID: 1978, номер: 26, дата: 24/4/10, имя: Джим, электронная почта: Jim@randomemail.com], [etc], [etc]

Я знаюэто, наверное, очень легко, но я новичок и застрял на несколько часов.

Ответы [ 3 ]

0 голосов
/ 16 октября 2018

Вот код, написанный на чистом Python, который поможет:

for line in file_contents_2:
    line_contents = line.strip().split(",") # Removes the \n,
    # then turns the line into a list, where each value is seperated
    # by the comma      
    the_dictionary = {}
    reference = ["ORIN","DEST","HORIZ","BEAR"]
    for i in range(4): # iterates i=0 to i=3
        # Arrays start at 0, so a=[1,2,3]; a[1] would return 2
        the_dictionary[reference[i]] = line_contents[i]
    dictionary_list.append(the_dictionary)
0 голосов
/ 16 октября 2018

Использование панд сделает вашу жизнь намного проще:

import pandas as pd
df = pd.read_csv('path_to_your_csv')
your_dict = df.to_dict()

Вот и все, в to_dict есть несколько необязательных аргументов, которые помогут вам отформатировать его так, как вы хотите.

0 голосов
/ 16 октября 2018

В продолжение моего комментария рассмотрим что-то вроде:

import csv
with open('file.txt', 'r') as f:
    reader = csv.DictReader(f, delimiter=' ', skipinitialspace=True)
    for row in reader:
        print(row)

Вывод:

OrderedDict([('#ID', '1978'), ('#Number', '26'), ('#Date', '24/4/10'), ('#Name', 'Jim'), ('#Email', 'Jim@randomemail.com')])
OrderedDict([('#ID', '1328'), ('#Number', '31'), ('#Date', '22/7/10'), ('#Name', 'Jim'), ('#Email', 'Kim@randomemail.com')])
OrderedDict([('#ID', '1908'), ('#Number', '26'), ('#Date', '21/4/10'), ('#Name', 'Jim'), ('#Email', 'Dim@randomemail.com')])
OrderedDict([('#ID', '1918'), ('#Number', '26'), ('#Date', '29/4/10'), ('#Name', 'Jim'), ('#Email', 'Rim@randomemail.com')])
OrderedDict([('#ID', '1938'), ('#Number', '46'), ('#Date', '24/4/10'), ('#Name', 'Jim'), ('#Email', 'Lim@randomemail.com')])

Два дополнительных аргумента DictReader необходимы для получения вашей переменной space-space-Файл с разделителями для правильного анализа

print(rows[0]["#Email"])

производит

Jim@randomemail.com

Обновление

Если ваш файл на самом деле tab с разделителями, вы можете использовать:

reader = csv.DictReader(f, delimiter='\t')

Вы должны быть в состоянии определить, что такое разделитель, напечатав строку (как у вас уже есть), но обернуть ее в вызов repr - что-то вроде print(repr(line)).Если вы видите \t в выводе, это разделитель табуляции.

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