我想知道是否有办法使用Python找到文本文件中一行的行号。
因此,例如,如果我们有文件textfile.txt
:
abc
deff
ghi
jkl
EOF
然后我喜欢像func(FILE,TEXT)
这样的函数,它可以通过以下方式工作:
Input: func(textfile.txt, "ghi")
Output: 3
答案 0 :(得分:1)
您可以在一行中调用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
,所以信用
答案 1 :(得分:0)
file_name="test.txt"
phrase="line3"
with open(file_name) as f:
for i, line in enumerate(f, 1):
if phrase in line:
print(i)
答案 2 :(得分:0)
也许你正在寻找:
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文档。你会对这样的事情变得多么容易感到震惊。
答案 3 :(得分:0)
这可能会有所帮助。
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)