目录
csv文件
一种用逗号分割来实现存储表格数据的文本文件。
python的csv模块
python遍历代码:
arr = [12, 5, 33, 4, 1] #遍历输出1 for i in range(0, len(arr)): item = arr[i] print(item) #遍历输出2 for item in arr: print(item) #遍历输出3 string_arr = [\"hi\", \"hello\", \"你好\", \"aloha\"] for item in string_arr: print(\"本次循环 item 变量的值\", item)
从csv文件读取内容
用DictReader对象的创建方法以及通过filenames属性获取csv表格的表头。
import csv #打开csv fo = open(\"info.csv\") #打开csv文件的文件对象作为参数来创建dictreader类的对象,存在reader变量中 reader = csv.DictReader(fo) #调用reader对象的filednames属性,获取csv文件表格的开头 headers = reader.fieldnames #关闭文件 fo.close() #打印 print(headers)
获取表格实际内容。
fo = open(\"info.csv\") reader = csv.DictReader(fo) #创建列表,存储读到的行 row_list = [] #遍历 for row in reader: row_list.append(row) fo.close() #打印 print(row_list[0]) #遍历row_list for d in row_list: #d是字典,直接打印key为年龄值即可 print(d[\"年龄\"]) #打印
写入csv文件
python提供了DictWriter方法,可以讲表格数据以字典的形式存储到csv文件中。
import csv #打开一个文件,假设是info.csv,写入所以是w #newline=\'\',写入时需要指定 fo = open(\"info2.csv\", \"w\", newline=\'\') #将表头存储到一个列表里 header = [\"姓名\", \"年龄\", \"部门\"] #创建一个DictWriter对象,第二个参数就是上面创建的表头 writer = csv.DictWriter(fo, header) writer.writeheader() #写入一行记录,以字典的形式,key需要与表头对应 writer.writerow({\"姓名\": \"小明\", \"年龄\":\"28\", \"部门\": \"行政部\"}) #关闭文件 fo.close()
运行后,相应的文件夹下会出现一个对应的csv文件。
也可以使用writer.writerows(row_list)来写入多个。
运用实例
数据准备
1、打开网页,读取内容,并创建相应的BeautifulSoup对象
2、找到包含新闻的div元素列表
3、从2中抽取标题
4、从2中抽取时间
from bs4 import BeautifulSoup def create_doc_from_filename(filename): fo = open(filename, \"r\", encoding=\'utf-8\') html_content = fo.read() fo.close doc = BeautifulSoup(html_content) return doc
(记得要pip install bs4)
#输入参数是BeautifulSoup对象,返回包含新闻的div元素列表 def find_index_labels(doc): index_labels = doc.find_all(\"div\", class_ = \"indexs\") return index_labels
#实现新闻标题的抽取函数 def get_title(label_object): #从刚才的参数传入的标签对象中过滤出所有的target = _blank的a标签 a_labels = label_object.find_all(\"a\", target = \"_blank\") #取得第一个标签对象 my_label = a_labels[0] #将标签的文字内容作为返回值返回 return my_label.get_text()
#实现获取新闻发布时间的函数 def get_pub_time(label_object): #找到class = comment-link的span标签 spans = label_object.find_all(\"span\", class_ = \"comment-link\") #取第一个 span = spans[0] #返回标题属性 return span[\"title\"]
#获取新闻标题与列表 #调用create_doc_from_filename函数 doc = create_doc_from_filename(\"jiandan.html\") #传入BeautifulSoup对象,将返回的div列表存储在index_labels中 index_labels = find_index_labels(doc) for label_object in index_labels: title = get_title(label_object) pub_time = get_pub_time(label_object) print(\"标题\", title) print(\"发布时间\", pub_time)
将数据存为字典的形式
#获取新闻标题与列表 #调用create_doc_from_filename函数 doc = create_doc_from_filename(\"jiandan.html\") #传入BeautifulSoup对象,将返回的div列表存储在index_labels中 index_labels = find_index_labels(doc) news_dict_list = [] for label_object in index_labels: title = get_title(label_object) pub_time = get_pub_time(label_object) news = {\"标题\": title, \"发布时间\": pub_time} news_dict_list.append(news) print(news_dict_list)
存储到csv文件
#创建csv fo = open(\"news.csv\", \"w\", newline=\'\', encoding=\'utf-8\') #表头 header = [\"标题\", \"发布时间\"] writer = csv.DictWriter(fo, header) #写入表头 writer.writeheader() #将上一步的字典写入csv文件中 writer.writerows(news_dict_list) fo.close()
总结
© 版权声明
THE END
暂无评论内容