尝试一次打开和读取txt文件中的一行,同时收集信息并随手建立列表。
所以我看起来像这样:
name_list = []
rating_list = []
price_list = []
cuisine_list = []
end_list = []
filename = '/Users/anqixiao/Desktop/restaurant recommendation/restaurants_small.txt'
file = open(filename, 'r')
line = file.readline()
while line != '':
name_list.append(line.strip('\n'))
rating_list.append(line.strip('\n'))
price_list.append(line.strip('\n'))
cuisine_list.append(line.strip('\n'))
end_list.append(line.strip('\n'))
file.close()
但是,当我手动进入while循环时,Python Shell已经停止响应。有人可以告诉我我哪里出问题了吗?我真的很感激!
非常感谢。
答案 0 :(得分:0)
line = file.readline()
将从txt文件读取一行,但是当您进入while循环时,您不会再读取其余的行,并且您正在输入一个无休止的循环。这就是为什么您会出错。 在file.readline()
while line != '':
放入while循环内
答案 1 :(得分:0)
更省钱的方法是:
name_list = []
rating_list = []
price_list = []
cuisine_list = []
end_list = []
filename = '/Users/anqixiao/Desktop/restaurant recommendation/restaurants_small.txt'
with open (filename, 'r') as file:
lines = file.readlines()
for line in lines:
if line != '':
name_list.append(line.strip('\n'))
rating_list.append(line.strip('\n'))
price_list.append(line.strip('\n'))
cuisine_list.append(line.strip('\n'))
end_list.append(line.strip('\n'))
使用您允许文件包含空行的内容,然后跳过它们。但是正如我的评论中所述,您的实际问题是永无休止的while循环。
答案 2 :(得分:0)
line
是指文档的第一行。如果它不是一个空字符串,除非更改,否则它将始终为true。要为每一行更改它,您只需将line = file.readline()
放在while循环的结尾
请注意,file.readlines()
会将file
中的每一行读入一个列表。 file.readlines().splitlines()
可以为您做剥离
答案 3 :(得分:0)
读取文件如下:
with open(filename, 'r') as f:
for line in f:
#do something
如果每行都有每个项目,例如:“名称,评分,价格,美食,结束”,
您可以使用split
来获取物品
如果内容行类似:“名称\ n评分\ n价格\ n美食\ n结束”,则可能有效
with open(filename, 'r') as f:
for idx, line in enumerate(f):
line = line.strip('\n')
if idx % item_nums == 0:
name_list.append(line)
# other case