Skip to main content
 首页 » 编程设计

python之打印包含特定整数的行的行号

2025年05月04日27txw1958

我试过了

import itertools 
import numpy as np 
 
with open('base.txt','r') as f: 
    lst = map(int, itertools.imap(float, f)) 
 
num=1200 
 
for line in lst: 
    if num == line: 
        print (line) 

只打印 1200...

我想到了比

import re 
import itertools 
 
with open('base.txt','r') as f: 
    lst = map(int, itertools.imap(float, f)) 
 
p = re.compile(r'(\d+)') 
 
num=1200 
 
for line in lst: 
    if num in p.findall(line): 
        print line 

但是我得到了

  File "a7.py", line 12, in <module> 
    if num in p.findall(line) : 
TypeError: expected string or buffer 

我想要的是包含1200的所有行号。文件有逐行输入的数字,我已经检查过了。

请您参考如下方法:

尽可能接近您提出的解决方案,这应该打印出包含您选择的 num 的所有行的行号。

import itertools 
with open('base.txt','r') as f: 
    lst = map(int, itertools.imap(float, f)) 
 
num=1200 
 
line_number = 1 
for line in lst: 
    if num == line: 
        print (line_number) 
    line_number += 1 

编辑

但是,您的代码只是截断了文件中的 float ——它不会正确地舍入它们。例如,1200.9 变为 1200 而不是 1201。

如果这对您来说不是问题,那很好。然而,一般来说,最好改变你的

lst = map(int, itertools.imap(float, f)) 

函数调用类似

lst = map(int,map(round, itertools.imap(float, f)))