我试过了
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)))
