Python 从文件创建列表
我正在创建一个占星术,我有一个不同质量的文件和4-5句关于每个质量的不同陈述。质量用空行隔开。我想将它们保存到一个名为qualities的列表中,其中qualities[0]包含第一个质量的句子,qualities[1]包含第二个质量的句子,依此类推 我的代码: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'
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。