繁体   English   中英

Python在随机函数中打印行号

[英]Python print line number in random function

我正在尝试从随机行函数中获取行号,该函数从 .txt 文件中读取随机行。 这是随机线函数:

import random
        def randomline(self, file1):
            with open(file1) as f:
                lines = f.readlines()
                regel = random.choice(lines)
                return regel

我想知道如何获得行号(我的意思是 .txt 中的第 6 行将返回 6 而不是该行上的单词)。

您可以生成与您的行具有相同长度的整数列表,并在此使用随机选择:

def randomline(self, file1):
    with open(file1) as f:
        lines = f.readlines()

        indices = range(len(lines)) 
        index = random.choice(indices)

        return index, lines[index]

使用 enumerate 生成行号和内容的元组并返回两者:

import random

def randomline(file1):
        with open(file1) as f:
            nums_and_lines = list((num, line) for num, line in enumerate(f))
            regel = random.choice(nums_and_lines)
            return regel

randomline('test.py')
# (7, '        metavar="filename\\(s\\)",\n')

您只需要知道您的文件中有多少行,然后您就可以使用 random 函数获得一个介于 1 和文件行数之间的随机数。

import random

def random_line(file_name):
    return random.randint(1, sum(1 for line in open(file_name)))

如果您不关心行上的实际内容,您只需在 1 和文件中的行数之间选择一个随机数。

此外,函数不需要是类方法,因为它不使用类的任何属性。

import random

def randomline(file1):
    with open(file1) as f:
        lines = f.readlines()
        return random.randint(1, len(lines))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM