正则表达式与CSV文件操作

从云班课平台中导出的学生作业为zip文件,解压后是一个作业文件夹,在其中的学生子目录(按学号+姓名命名)中有.html文件。希望将所有学生的答案以csv格式保存、方便对比批阅。正好复习《Python爬虫开发 从入门到实战(微课版)》,稍微改改第3章正则表达式与文件操作的案例代码完成了作业汇总的任务。

import os
import re
# import csv
import pandas as pd

t_dir=r'D:\Users\yuanyujie\Documents\Downloads\旅管本191-旅游研究方法-专业兴趣与问题调查' #指定文件夹
result_list= [] #提取所需到包含字典的列表

for root, dirs, files in os.walk(t_dir):
for s_dir in dirs:
for sub_root, sub_dirs, sub_files in os.walk(os.path.join(root,s_dir)): #遍历子目录与文件
for f_list in sub_files:
if f_list[-4:]=="html":
print(s_dir, f_list)
url=os.path.join(root,s_dir,f_list) #文件绝对路径
print(url)
htmlf = open(url,'r',encoding='utf-8') #打开文件
htmlcont = htmlf.read() #读取文件内容
content_list=re.findall('<span>(.*?)<',htmlcont,re.S) #正则表达式
name_list=s_dir[13:]
num_list=s_dir[:12]
result = {'num':num_list,
'name':name_list,
'content':content_list
}
result_list.append(result) #列表追加元素字典

print(result_list)

df = pd.DataFrame(result_list) #包含字典的列表直接转Dataframe
print(df)
os.chdir(t_dir) #指定工作目录
df.to_csv('test.csv',encoding='ansi') #保存csv文件

# with open('test01.csv','w',encoding='utf-8') as f:
# writer=csv.DictWriter(f,fieldnames=['num','name','content'])
# writer.writeheader()
# writer.writerows(result_list)

if os.path.exists('test.csv'):
print('Done')
else:
print('Try Again')

写代码时碰到两个问题,一是.html文件直接用open命令打开后,还需要read命令读取内容,二是文件默认保存到工作目录,需要指定目录时要用os.chdir()。此外,发现包含字典的列转成Dataframe用一行代码就行,用pandas保存csv也是直接一行代码就行。保存时注意事项是编码需要设为ANSI,用utf-8保存再用Excel打开时中文会显示乱码。

酒店信息化与电子商务

到山东青年政治学院旅游学院工作后,我开设了《旅游电子商务》课程,对所选教材总有不满意的地方,正好碰上北大出版社组织教材选题,因此有了自己主编一本教材的契机。

在前言中阐述了教材《酒店信息化与电子商务》的编写目标:

“酒店业是旅游业的传统三大支柱行业之一,也是旅游业中较早开展信息化建设,企业管理信息化水平较高的行业。已有不少的酒店信息化与电子商务专业教材,但是这些教材与旅游电子商务教材具有相似的三种倾向:第一、专业技术倾向,较多采用计算机专业的术语,介绍酒店相关系统与网站的开发技术;第二、理论研究倾向,大量列举酒店信息化与电子商务的案例,阐述相关概念、战略与策略;第三、实践操作倾向,主要介绍某款酒店管理软件的操作,一定程度上属于软件操作手册的改版。

上述教材分别侧重于培养学生的酒店信息化与电子商务的软件开发、理论分析与操作技能,本教材编写者希望针对酒店业界的实际需求,以及学生发展的长远目标,能在三种倾向之间寻找到一个平衡点,使得教材的结构设计合理、内容涉及广泛,教学目标明确。”

教材在北大出版社编辑的帮助与督促,在同事的共同努力下得以出版,给个当当网的链接:

酒店信息化与电子商务

现在已有同行选用了这本教材,网上读者也有一些好评。但当时是初生牛犊般承编下来,如今明白好的教材才有机会一而再、再而三的修订。

以后如果有机会,打算在以下方面展开修订:第一、酒店管理信息系统软件的统一与教学辅助,第二、酒店电子商务方面教材内容的细化与充实。