python random.shuffle 从文本文件中的列表

问题描述 投票:0回答:1

尝试执行 random.shuffle,如果声明了列表,效果很好。 在示例 2 中,我尝试从包含 1000 个条目的文件中执行此操作 显示前两行。 txt 文件格式是否错误?我无法让它发挥作用。 我尝试了网上找到的很多例子。

随机导入

#示例1

list1 = ['sub', 'gig', 'bug']

随机洗牌(列表1)

打印('列表1:',列表1)

#结果

list1: ['bug', 'gig', 'sub']

#示例2 #masterwords.txt 在第 1 行和第 2 行有这个

['bug', 'gig', 'sub']

['青蛙', '狗', '猫']

打开(“masterwords.txt”,mode =“r”,encoding =“utf-8”)作为文件:

行= []

对于文件中的行:

  line = line.strip()

  lines.append(line)

  random.shuffle(lines)

打印(行)

#结果:

["['青蛙', '狗', '猫']", "['bug', 'gig', 'sub']", '']

python random shuffle
1个回答
0
投票

文件中的数据是Python列表的字符串表示形式。您需要将它们转换为运行时列表。您可以使用 ast.literal_eval() 函数来完成此操作。

假设输入文件包含:

['bug', 'gig', 'sub']
['frog', 'dog', 'cat']

然后:

from ast import literal_eval
from random import shuffle

with open("masterwords.txt") as mw:
    for line in mw:
        lst = literal_eval(line)
        shuffle(lst)
        print(lst)

可能的输出:

['sub', 'gig', 'bug']
['cat', 'dog', 'frog']
© www.soinside.com 2019 - 2024. All rights reserved.