Indexing lines in a Python file

孤者浪人 提交于 2019-12-24 07:04:16

问题


I want to open a file, and simply return the contents of said file with each line beginning with the line number.

So hypothetically if the contents of a is

a

b

c

I would like the result to be

1: a

2: b

3: c

Im kind of stuck, tried enumerating but it doesn't give me the desired format.

Is for Uni, but only a practice test.

A couple bits of trial code to prove I have no idea what I'm doing / where to start

def print_numbered_lines(filename):
    """returns the infile data with a line number infront of the contents"""
    in_file = open(filename, 'r').readlines()
    list_1 = []
    for line in in_file:
        for item in line:
            item.index(item)
            list_1.append(item)
    return list_1

def print_numbered_lines(filename):
    """returns the infile data with a line number infront of the contents"""
    in_file = open(filename, 'r').readlines()
    result = []
    for i in in_file:
        result.append(enumerate(i))
    return result

回答1:


A file handle can be treated as an iterable.

with open('tree_game2.txt') as f:
   for i, line in enumerate(f):
   print ("{0}: {1}".format(i+1,line))



回答2:


There seems no need to write a python script, awk would solve your problem.

 awk '{print NR": "$1}' your_file > new_file



回答3:


What about using an OrderedDict

from collections import OrderedDict

c = OrderedDict()
n = 1
with open('file.txt', 'r') as f:
    for line in f:
        c.update({n:line})
        #if you just want to print it, skip the dict part and just do:
        print n,line
        n += 1

Then you can print it out with:

for n,line in c.iteritems(): #.items() if Python3
    print k,line


来源:https://stackoverflow.com/questions/43993429/indexing-lines-in-a-python-file

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!