Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从文件创建列表_Python_File_List_Object - Fatal编程技术网

Python 从文件创建列表

Python 从文件创建列表,python,file,list,object,Python,File,List,Object,我正在创建一个占星术,我有一个不同质量的文件和4-5句关于每个质量的不同陈述。质量用空行隔开。我想将它们保存到一个名为qualities的列表中,其中qualities[0]包含第一个质量的句子,qualities[1]包含第二个质量的句子,依此类推 我的代码: class Horoscope: def __init__(self, filename): self.qualities = list() file = open(filename, 'rU'

我正在创建一个占星术,我有一个不同质量的文件和4-5句关于每个质量的不同陈述。质量用空行隔开。我想将它们保存到一个名为qualities的列表中,其中qualities[0]包含第一个质量的句子,qualities[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.qualitys[I]
并没有引发索引器。这表明
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的每一行。原始代码执行更复杂的操作,有时覆盖同一索引,有时推进索引。你真的想要吗?如果是这样,您希望在索引仅处于高级位置的列表中放置什么<代码>无
?必须在每个索引中放置一些值。。。(例如,不能在第二个和第五个索引处列出值。长度为5的列表必须有5个值。)

看起来您的代码可以简化为:

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

我认为您的程序应该会出现错误,因为您试图访问的索引甚至不存在,或者可能是您的
(如果
条件从来都不是
真的
)。发布文本文件,以便我们可以修复您的
如果
条件。我的意图是将文本文件中的每一行>=2保存到第一个索引中,然后,当语句不真实时,则前进索引并再次保存每行>=2。