Текстовый файл Python в словарь не работает

Итак, текст файла, который я должен перенести в словарь для телефонной книги, выглядит следующим образом:

Имя1 Имя2 Номера

Имя3 Имя4 Номера2

и так далее..

Что я пробовал:

def read():

    file1=open("file.txt","r")

    dict={}

    for line in file1:

        line=line.split()

        if not line:continue

        dict[line[0]]=line[1:]

    print(dict)

Когда я запускаю его, он ничего не печатает.

Спасибо!

4 ответа

Это мой путь

def read_dict():
    file1 = open("file.txt", 'r')
    dict={}  

    # read lines of all
    lines = file1.readlines()

    # Process one line at a time.
    for line in lines:
        line = line.split()
        if not line: continue
        dict[line[0]] = line[1:]

    file1.close()
    print(dict)

read_dict()

или (используйте с) вам не нужно закрывать файл

def read_dict():
    with open("file.txt", 'r') as file1:
        dict={}  
        # read lines of all
        lines = file1.readlines()
        # Process one line at a time.
        for line in lines:
            line = line.split()
            if not line: continue
            dict[line[0]] = line[1:]
        print(dict)

Убедитесь, что вы вызываете функцию. Я немного изменил его, поэтому он не использует такие слова, как "читать" или "дикт". Это работает:

def main():
    thefile = open("file.txt","r")
    thedict={}
    for theline in thefile:
        thelist = theline.split(" ")
        if not thelist:
            continue
        thedict[thelist[0]]=thelist[1:]

    print(thedict)

main()

результаты в:

{'Name1': ['Name2', 'Numbers\n'], 'Name3': ['Name4', 'Numbers2']}

Много комментариев, чтобы сделать здесь.

1 - Вы забыли добавить ".read()" при открытии файла.

2 - Вы используете зарезервированные слова для языка Python. "dict" - это то, что используется языком, поэтому избегайте его использования напрямую. Вместо этого назовите их более конкретно. Любой ценой избегайте именования ваших переменных словами, уже используемыми языком Python.

3 - Ваша функция ничего не возвращает. В конце каждой функции необходимо указать "return" плюс объект, для которого функция должна возвращать значение.

def read_dict():
    file1 = open("file.txt","r").read()
    my_dict = {}
    for line in file1:
        line = line.split()
        if not line:
            continue
        my_dict[line[0]] = line[1:]
    return my_dict

print(read_dict())

Вы включили свою реализацию в функцию read(). Вам нужно где-то вызвать функцию.

def read():
  file1=open("file.txt","r")

  dict={}

  for line in file1:

    line=line.split()

    if not line:continue

    dict[line[0]]=line[1:]

  print(dict)

read()

Попробуй это.

Другие вопросы по тегам