我试过这个
FileReader fr = new FileReader(archivoVentas);
Scanner scanner = new Scanner(fr).useLocale(Locale.US);
只需打印1200 ...
我想到的不是
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)
但我得到了
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
我想要的是包含1200的所有行号.File逐行输入数字,我已经检查了这个。
答案 0 :(得分:2)
尽可能接近您建议的解决方案,这应该打印出包含您所选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
修改强>
但是,您的代码只会截断文件中的浮点数 - 它不会正确舍入它们。例如,1200.9
变为1200
而不是1201
。
如果这不是你的问题,那很好。但是,一般来说,更改
会更好lst = map(int, itertools.imap(float, f))
函数调用
之类的东西lst = map(int,map(round, itertools.imap(float, f)))
答案 1 :(得分:2)
您可以使用enumerate()
:
with open('base.txt', 'r') as f:
for i, line in enumerate(f):
if num == int(line):
print i
答案 2 :(得分:1)
如果您只想打印行号,则需要跟踪您所在的行。
此外,此代码不会立即将文件的全部内容读入内存。 (适用于大文件)。
num = 1200
line_num = 0
with open('base.txt','r') as f:
line_num += 1
for line in f:
if int(line) == num:
print line_num