[英]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.