在Python中提取txt文件的行号

在Python中提取txt文件的行号,python,file,line-numbers,Python,File,Line Numbers,我想知道是否有一种方法可以使用Python在文本文件中查找行的行号 例如,如果我们有文件textfile.txt: abc deff ghi jkl EOF 然后我想要一个像func(文件,文本)这样的函数,它将以以下方式工作: Input: func(textfile.txt, "ghi") Output: 3 可以在一行中执行此操作,在生成器上调用next(),该生成器使用enumerate()函数获取该行的索引 因此,作为一种功能: def func(f, t): retur

我想知道是否有一种方法可以使用Python在文本文件中查找行的行号

例如,如果我们有文件
textfile.txt

abc
deff
ghi
jkl
EOF
然后我想要一个像
func(文件,文本)
这样的函数,它将以以下方式工作:

Input:  func(textfile.txt, "ghi")
Output: 3

可以在一行中执行此操作,在生成器上调用
next()
,该生成器使用
enumerate()
函数获取该行的索引

因此,作为一种功能:

def func(f, t):
    return next(i for i, l in enumerate(open(f).read().split('\n'), 1) if l == t)
可以通过以下方式调用:

func('textfile.txt', 'ghi') # --> 3


注意:
enumerate(…,1)
技巧来自
@KeyurPotdar
,所以creds

可能就是您要寻找的:

def fn(fname, substr):
    with open(fname) as text:
        for n, line in enumerate(text, start=1):
            if line.startswith(substr):
                return n
    return -1
不要害怕学习关于字符串函数、文件I/O、上下文管理器等的python文档。您会惊讶于这样的事情是多么容易完成。

这可能会有所帮助

def LineNumber(phrase,textObjext):
    for i, line in enumerate(textObjext, 1):
        if phrase in line:
           return i

file_name="test.txt"
phrase="deff"
text = open(file_name,'r')
line = LineNumber(phrase,text)
print(line)

你为什么要电话号码?你最终想做什么?我有一个包含信息的输出文件。我想找到写有“某物和某物”的行,并将该行和下面的“n”行复制到另一个文件中。
将open('my_file.txt')作为f:line_num,line in enumerate(f):
这是开始,不是定义,是我希望在执行函数后得到的输出…不能使用python关键字作为变量名
def
是为函数定义保留的。您也可以执行
枚举(…,1)
@KeyurPotdar Nice one:)而不是最后的
+1
def LineNumber(phrase,textObjext):
    for i, line in enumerate(textObjext, 1):
        if phrase in line:
           return i

file_name="test.txt"
phrase="deff"
text = open(file_name,'r')
line = LineNumber(phrase,text)
print(line)