python程序不读取文本文件,也不会将单词放在列表中

时间:2014-03-09 18:07:45

标签: python

我希望程序读取文本文件并将每个单词放在列表中,这是我编写的代码:

class Teater(object):
    def__init__(self, namn, AntalPlatser, VuxenBiljettpris, 
            PensionärBiljettpris, BarnBiljettpris, 
            vuxen=0, pansionär=0, barn=0):

        self.namn=namn
        self.AntalPlatser=AntalPlatser
        self.VuxenBiljettpris=VuxenBiljettpris
        self.PensionärBiljettpris=PensionärBiljettpris
        self.BarnBiljettpris=BarnBiljettpris
        self.vuxen=vuxen
        self.barn=barn
        self.pansionär=pansionär


def teaterLista():
    infil = open("teatrar.txt", "r", encoding="utf8")
    lista=[]
    lista = lista[4:]
    for rad in lista:
        splitList=rad.split("/")
        namn=splitlist[0]
        AntalPlatser=splitlist[1]
        VuxenBiljettpris=splitlist[2]
        PensionärBiljettpris=splitlist[3]
        BarnBiljettpris=splitlist[4]
        nyTeater = Teater(
            namn, 
            AntalPlatser, 
            VuxenBiljettpris, 
            PensionärBiljettpris,
            BarnBiljettpris)
        lista.append(nyTeater)
    return lista

我的文本文件如下:

Såda Teaterbiljetter
TeaternsNamn/Antal platser i salongen/Vuxenbiljettpris/Pensionärbiljettpris/Barnbiljettpris
------------------------------------------------------------------------------------- 

SodraTeatern/414/330/260/200 

Dramaten/770/390/350/100 

ChinaTeatern/1230/395/300/250

我不希望打印文本文件的前4行。但是当我在python Shell中输入läsFil()时,我只能得到:[]

2 个答案:

答案 0 :(得分:0)

您的代码存在许多问题,但最明显的是您从未从文件infil中读取。相反,您创建一个空列表并在该列表上取一个切片,因此它仍为空:

lista=[]
lista = lista[4:]

无论如何,你应该看一下CSV模块,它可以处理你读取分隔文本文件(用逗号或斜线分隔)。

答案 1 :(得分:0)

这部分代码看起来很可疑:

infil = open("teatrar.txt", "r", encoding="utf8")  # not used after.
lista=[]
lista = lista[4:]  # does nothing since lista is empty
for rad in lista:

你可能意味着:

infil = open("teatrar.txt", "r", encoding="utf8")
lista=[]
for rad in infil:

然后

namn=splitlist[0]
AntalPlatser=splitlist[1]
VuxenBiljettpris=splitlist[2]
PensionärBiljettpris=splitlist[3]
BarnBiljettpris=splitlist[4]

可以更好地写成

namn, AntalPlatser, VuxenBiljettpris, PensionärBiljettpris,  BarnBiljettpris =  splitlist[:5]