Как использовать функцию enumerate в текстовом файле?

#python

#python

Вопрос:

Я пытаюсь прочитать Hi.txt файл, который я ранее создал на консоли, но вместо того, чтобы просто получать из него значения, я пытаюсь добавить значение индекса рядом с ним, используя функцию enumerate . (Предположим, что текстовый файл содержит 3 элемента).

 with open('Hi.txt','r') as hello:
    x = hello.read()
    print(x)
  

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

 Dave
Jack
Mary
  

Однако, когда я пытаюсь сделать что-то вроде этого:

 with open('Hi.txt','r') as hello:
    x = hello.read()
    for i,v in enumerate(x,1):
        print(i,v)
  

Он выводит каждый символ один за другим.

Желаемый результат:

 1 Dave
2 Jack
3 Mary
  

Ответ №1:

Вы перечисляете сам дескриптор файла:

 with open('/Hi.txt','r') as hello:
    for i,v in enumerate(hello,1):
        print(i,v, end="")
  

Ответ №2:

Вы можете сделать что-то вроде этого:

 with open('Hi.txt','r') as hello:
    for i,v in enumerate(hello.readlines(), 1):
        print(i,v, end="")
  

Это повторится для всех строк в вашем файле (при условии, что у вас есть все элементы файла в разделенных строках).

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

1. я думаю, что это for i,v in enumerate(hello) не должно быть hello.readlines()

2. Есть два способа, с помощью которых это не дает оператору то, что он / она хочет. — это в принципе работает, но вы пропустили две детали, которые означают, что это не совсем правильно.

3. @JoeFerndz Я только что протестировал, и это точно то же самое, используя enumerate(hello) и enumerate(hello.readlines())

4. да … и ваши значения индекса начинаются с 0, а не с 1

5. @JorgeMorgado, я вижу, что ты выполняешь readlines(), поэтому он помещает все в диапазон. И вы используете v для выполнения по умолчанию n принудительного end = «» . Неплохо. Проголосовал за изобретательность