从文件中生成列表 Python

3
我有一个文件,看起来像这样:就是这个样子
Pokemon     HP  Attack_Points   Type    Weakness
Bulbasaur   45     49     Grass Fire
Ivysaur     60     62     Grass Fire
Venusaur    80     82     Grass Fire

我正在尝试从随机行生成列表,以下是我的代码:

from random import randint

open_pokedex=open("pokedex.txt","r")
p1_p1=list()
pokemon_selection=(randint(1,40))
p1_p1.append(open_pokedex.readline()[pokemon_selection])

但是这并没有起作用,有人有什么想法吗?

输出:这次它生成了31并且显示为this = ['\t'] p1_p1。

问题已解决

但由于txt文件不好,它会产生['Charmander \ t39 \ t52 \ Fire \ Water \ n'],如何在不干扰文件本身的情况下删除这些制表符


你可能想使用readlines()而不是readline()。你应该展示一下你的代码当前的输出,这样我们就有更多信息了。说“它不起作用”并没有什么用,因为我们需要知道它以何种方式不起作用。 - Tom Dalton
是的,你说得对让我修改一下。 编辑:已完成。 - Ciocomo Trombetta
1个回答

3
使用 linecache.getline。这个函数恰好能够实现你需要的功能;从文件中获取第 lineno 行的内容。
import linecache
from random import randint

pokemon_selection = randint(1, 40)
pokemon = linecache.getline("pokedex.txt", pokemon_selection)

@CiocomoTrombetta,然后,p1_p1.append(pokemon) - falsetru
@CiocomoTrombetta,或者p1_p1.append(linecache.getline("pokedex.txt", pokemon_selection)) - falsetru
1
@CiocomoTrombetta,顺便说一句,如果可能的话,请不要多次更新问题,而是发布另一个问题。 - falsetru
1
@CiocomoTrombetta,str.strip可以去除字符串开头和结尾的空格(包括空格、制表符、垂直制表符、换行符),但不会去除中间的空格。 - falsetru
1
@CiocomoTrombetta,您需要的是str.splitp1_p1.append(linecache.getline("pokedex.txt", pokemon_selection).split()) - falsetru
显示剩余8条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接