Python从文件加载列表并打印随机选择

时间:2016-03-19 09:36:44

标签: python python-2.7

我有一个名为projects.txt的文件,其中包含以下代码行:

['Apollo', 'Astro', 'Aurora', 'Barcelona']

我使用以下Python2代码加载文件并尝试打印随机选择,但我总是从列表中只获得一个字符:

import random

projNames = open('projects.txt').read()
print(random.choice(projNames))

示例结果: a

但是,如果我将文本文件的内容直接复制到代码中,它对我来说是正常的。

import random

projNames = ['Apollo', 'Astro', 'Aurora', 'Barcelona']
print(random.choice(projNames))

示例结果: Apollo

我需要它能够直接加载文件的内容,而不是编辑.py文件中的代码。

我在原始代码中忽略了什么?我专门使用Python 2.7.x (最新版本)

3 个答案:

答案 0 :(得分:2)

你必须首先解析\ eval字符串才能成为Python列表:

import ast
import random

projNames = ast.literal_eval(open('projects.txt').read())
print(random.choice(projNames))

答案 1 :(得分:1)

这是因为read方法会将您的文件读取为一个大字符串而不是list。您将需要解析read命令的输出(逗号对split可能适合您):

>>> my_string.split()
['Apollo', 'Astro', 'Aurora', 'Barcelona']

答案 2 :(得分:1)

将单引号char替换为双引号后,可以使用json.loads。代码将是这样的:

import random
import json

line = open('projects.txt').read().replace("'", '"')  # Format JSON
projNames = json.loads(line) # Load list
print(random.choice(projNames))