您好我正在尝试从二维列表中提取信息。我使用此代码读取数据:
books = []
file_in = open(filename, 'r')
for line in file_in:
thisline = line.split('\t')
books.append(thisline)
file_in.close()
return books
这只是函数中的代码。当我以前的功能将列表分配给book_data然后我打印book_data我得到这个:
[[' 1876',' Gore Vidal',' Random House',' 4/11 / 1976',' ;小说\ n'],[' 23337','斯蒂芬金'' Scribner'' 11/27/2011' ,'小说\ n'],[' ...和俱乐部的女士们,' Helen Hooven Santmeyer' Putnam', ' 7/8 / 1984',' Fiction \ n'],' 1st to Die',' James Patterson',' ;小,布朗' 3/25 / 2001','小说\ n']
但是当我尝试做类似的事情时:
for book in books:
print(book)
我在第一本书中得到了回报:[' 1876',' Gore Vidal',' Random House',' 4/11 / 1976','小说\ n']
我需要能够浏览每本书并比较这些书中的项目,但我似乎甚至无法使用循环打印整个列表。我实际上需要能够通过作者名称搜索它。
答案 0 :(得分:0)
没有错
l = [element_1, element_2, ..., element_n]
for element in l:
print(element)
语法,正如预期的那样,将逐个打印所有元素,如果每个元素都是一个列表,那么它将逐个打印这些列表中的每一个。
如果你这样做
books = [['1876', 'Gore Vidal', 'Random House', '4/11/1976', 'Fiction\n'], ['23337', 'Stephen King', 'Scribner', '11/27/2011', 'Fiction\n'], ['...and Ladies of the Club', 'Helen Hooven Santmeyer', 'Putnam', '7/8/1984', 'Fiction\n'], ['1st to Die', 'James Patterson', 'Little, Brown', '3/25/2001', 'Fiction\n']]
然后运行你在那里的for-loop, 将打印逐个代表书籍的每个列表。一旦你到达那里(无论你想从哪一个打印出来),这可能是书籍或book_data中的内容的问题。
另外,考虑使用字典来表示每本书,这样你就可以更明确地对其属性进行结构化(而不是仅仅依赖于记住哪个索引号对应于哪个书属性)并执行类似
的操作。if some_book['author'] == "Dude McAuthorson":
do_something()