首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从文件创建列表

从文件创建列表
EN

Stack Overflow用户
提问于 2013-07-25 21:05:33
回答 2查看 104关注 0票数 0

我正在创建一个星座,其中我有一个不同质量的文件和4-5个句子,每个质量都有不同的陈述。质量用空行分隔。我想将它们保存到一个名为quality的列表中,其中quality包含获得第一个质量的句子,qualities1包含关于第二个质量的句子,依此类推。

我的代码:

代码语言:javascript
复制
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)

不幸的是,上面只印着“"..。有人知道为什么吗?谢谢!

EN

回答 2

Stack Overflow用户

发布于 2013-07-25 21:07:42

我很惊讶self.qualities[i]没有提出一个IndexError。这表明len(row)永远不是>= 2。但是,如果是这样的话,您应该改用append

代码语言:javascript
复制
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个值。)

票数 1
EN

Stack Overflow用户

发布于 2013-07-25 21:10:40

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

代码语言:javascript
复制
class Horoscope:
    def __init__(self, filename):
        with open(filename) as fin:
            self.qualities = [line.strip() for line in fin if '/' in line]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17858879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档