用python编程,给出文章名,年份,出版社,第一作者第二作者等,要求类似于矩阵(表格)形式

用python编程,给出文章名,年份,出版社,第一作者第二作者等,要求类似于矩阵(表格)形式,第1张

我最开始的想法是和楼上一样的想法,但是实际 *** 作中发现了一些问题。

首先,楼主给的csv文件本身是参差的,所以只能用csv.reader取得一行的list,需要自己去解析

然后,800个的数据量也不算太小,用dict建立索引的话效率不会太高

综上,我的想法是数据结构用一个保存作者名的set和保存2位有共同著作的作者的set,这样占用的空间也比较小,然后建立表格也比较简单。

不过实现需要一点时间,晚上回家之后试着写写看吧。不过800个确实挺多,显示出来的表能有多大啊。

-----------------------------------------------------------------------------------

import csv

import itertools

if __name__ == '__main__':

reader = csv.reader(open('books.csv'))

authors = set()

pairs = set()

for line in reader:

list = line[3:]

if list[0] == 'column1': continue

if '' in list : list.remove('')

for str in list: authors.add(str)

for pair in itertools.combinations(list, 2): pairs.add(pair)

line = ''

for author1 in authors:

line += '\t' + author1

print(line)

for author1 in authors:

line = author1

for author2 in authors:

line += '\t' + ('X' if author1 == author2 else '1' if ((author1, author2) in pairs or (author2, author1) in pairs) else '0')

print(line)

我写的,从楼上的代码学习到了itertools.combinations的用法,感谢。

代码修改了一次,我被某种一切都是对象的语言控制了,不用类不舒服斯基。现在这样看舒服多了。

Python文件 *** 作主要有以下几种方式:

打开文件:使用open()函数打开文件,该函数需要指定文件名以及打开文件的模式(例如只读、只写、追加等)。打开文件后,可以使用文件对象进行读取、写入、关闭等 *** 作。

读取文件:使用文件对象的read()、readline()、readlines()方法来读取文件内容。read()方法可以一次性读取整个文件,readline()方法可以逐行读取文件,readlines()方法可以将文件的所有行读取到一个列表中。

写入文件:使用文件对象的write()方法将数据写入文件。write()方法可以接受字符串作为参数,并将其写入文件。

关闭文件:使用文件对象的close()方法关闭文件。关闭文件后,可以避免占用系统资源。

with语句:使用with语句可以自动管理文件的关闭。with语句创建一个上下文环境,在该环境中打开文件,并在代码块执行完毕后自动关闭文件。

os模块:使用os模块可以进行文件和目录的 *** 作,包括创建、重命名、删除、移动等。os模块还提供了一些与文件路径相关的函数,例如join()、split()、abspath()等,可以方便地处理文件路径。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11594097.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存