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

时间:2016-03-31 17:54:01

标签: python regex

我试过这个

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逐行输入数字,我已经检查了这个。

3 个答案:

答案 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