簡體   English   中英

從文件創建列表

[英]Creating a list from a file

我正在創建一個占星術,其中有一個具有不同質量的文件,以及4-5個句子,其中每種質量都有不同的說明。 質量用空行分隔。 我想將它們保存到一個名為quality的列表中,其中quality [0]包含具有第一品質的句子,quality [1]包含與第二品質有關的句子,依此類推。

我的代碼:

class Horoscope:

    def __init__(self, filename):
        self.qualities = list()
        file = open(filename, 'rU')
        i = 0
        for line in file:
            row= line.strip().split('/')
            if len(row) >= 2:
                self.qualities[0+i] = row
            else:
                i += 1
        file.close() FILENAME= 'horoscope.txt'

horoscope= Horoscope(FILENAME)

print(horoscope.qualities)

不幸的是,所有打印的都是“ []”……有人知道為什么嗎? 謝謝!

我很驚訝self.qualities[i]沒有引發IndexError。 這表明len(row)從不>= 2 但是,如果是這樣,則應改為使用append

class Horoscope:
    def __init__(self, filename):
        self.qualities = list()
        with open(filename, 'rU') as f:
            for line in f:
                row = line.strip().split('/')
                if len(row) >= 2:
                    self.qualities.append(row)

FILENAME= 'horoscope.txt'
horoscope= Horoscope(FILENAME)
print(horoscope.qualities)

請注意,這不會復制原始代碼的邏輯。 它附加len(row) >= 2每一行。 您的原始代碼會做一些更復雜的事情,有時覆蓋相同的索引,有時會使索引前進。 你真的想要那個嗎? 如果是這樣,您想在列表中簡單索引的位置放置什么? None 必須在每個索引處放置一個值...(不能有僅在第二和第五個索引處具有值的列表。長度為5的列表必須具有5個值。)

看起來您的代碼可以簡化為:

class Horoscope:
    def __init__(self, filename):
        with open(filename) as fin:
            self.qualities = [line.strip() for line in fin if '/' in line]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM