温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。
作者: 许梦洁 (Frankfurt School of Finance and Management)
E-mail: m.xu@fs.de
目录
还是年报问询函的研究,需要从问询函文本中提取交易所要求回复的日期,同时还需要从公司回复的文本中提取公司实际上回复的日期。因此需要对两类文本分别进行分析。
通过观察,发现问询函中含有交易所要求回复的日期的句子通常是这样的:
“请你公司就上述问题做出书面说明,并在 8 月 9 日前将有关说明 材料报送我部,并对外披露。”
“请你公司就上述问题做出书面说明,涉及需披露的,请及时履行披露义务,并在2015年5月6日前将有关说明材料报送我部,同时抄送派出机构。”
相应的提取规则就很简单啦:
要求回复日期提取规则 = re.compile('[在于](.*月.*日)前', re.M)
查询结果 = re.findall(b, 问询函文本)
要求回复日期 = 查询结果[0].strip()
而公司的回函通常在整个回函的最后一行署上回函日期:
eg1: 万科的回函
eg2: 全新好的回函
所以,回函日期的提取规则为:
回函日期提取规则 = re.compile('(^.*年.*月.*日)', re.M)
查询结果 = re.findall(b, 回函文本)
回函日期 = 查询结果[-1].strip()
以提取回函时间为例,完整的遍历一个文件夹下所有TXT和DOC文件,提取其中文字并使用正则表达式提取回函时间的代码为:
import os
import docx2txt
import re
content_list = []
def readdocx(filepath):
content = docx2txt.process(filepath) #打开传进来的路径
docucode = filepath.split('/')[-1]
content_list.append([docucode.split('.')[0],content])
def readtxt(filepath):
content = open(filepath, "r").read() #打开传进来的路径
docucode = filepath.split('/')[-1]
content_list.append([docucode.split('.')[0],content])
def eachFile(filepath):
pathDir = os.listdir(filepath) #获取当前路径下的文件名,返回List
for s in pathDir:
newDir=os.path.join(filepath,s) #将文件命加入到当前文件路径后面
if os.path.isfile(newDir) : #如果是文件
doctype = os.path.splitext(newDir)[1]
if doctype == ".txt": #判断是否是txt
readtxt(newDir)
elif doctype == ".docx":
readdocx(newDir)
else:
pass
else:
eachFile(newDir) #如果不是文件,递归这个文件夹的路径
eachFile("/Users/深交所回复/")
f = open("/Users/深交所回函时间.txt",'w')
a = 1
for doc in content_list:
回函日期提取规则 = re.compile('(^.*年.*月.*日)', re.M)
查询结果 = re.findall(b, 回函文本)
if a:
print([doc[0],查询结果[-1].strip()])
f.write(','.join([doc[0],查询结果[-1].strip()])+'\n')
回函编码 | 回函时间 |
---|---|
CDD00060941539694HF | 2017年5月9日 |
CDD000711538301452HF | 二〇一九年四月三日 |
CDD000160518921313HF | 2018 年 10 月 24 日 |
CDD00066240310540HF | 2016 年 11 月 30 日 |
CDD00001841921743HF | 二〇一七年六月八日 |
CDD000767516771355HF | 二〇一八年十二月五日 |
CDD00085036747HF | 2015 年 12 月 1 日 |
CDD00070642758829HF | 2017 年 8 月 30 日 |
CDD000995523321387HF | 2018 年 12 月 24 日 |
CDD00061039434429HF | 年 月 日 |
CDD00053343479922HF | 2017 年 12 月 25 日 |
CDD00015540186516HF | 二〇一六年十一月九日 |
CDD00091237491HF | 2016 年 3 月 14 日 |
CDD000803515551281HF | 二〇一八年九月二十七日 |
CDD00051840669600HF | 2017 年 1 月 16 日 |
CDD00095843607935HF | 2018 年 1 月 9 日 |
CDD000917516581436HF | 2019 年 2 月 26 日 |
CDD00098239987494HF | 二〇一六年十月十四日 |
CDD000566511201229HF | 二〇一八年七月三十一日 |
XXB_CDD_000829天音控股回复 | 2015 年 6 月 25 日 |
连享会-直播课 上线了!
http://lianxh.duanshu.com
免费公开课:
直击面板数据模型 - 连玉君,时长:1小时40分钟 Stata 33 讲 - 连玉君, 每讲 15 分钟. 部分直播课 课程资料下载 (PPT,dofiles等)
支持回看,所有课程可以随时购买观看。
专题 | 嘉宾 | 直播/回看视频 |
---|---|---|
⭐ 最新专题 ⭐ | DSGE, 因果推断, 空间计量等 | |
⭕ Stata数据清洗 | 游万海 | 直播, 2 小时,已上线 |
研究设计 | 连玉君 | 我的特斯拉-实证研究设计,-幻灯片- |
面板模型 | 连玉君 | 动态面板模型,-幻灯片- |
面板模型 | 连玉君 | 直击面板数据模型 [免费公开课,2小时] |
Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。
关于我们
课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法
等
连享会小程序:扫一扫,看推文,看视频……
扫码加入连享会微信群,提问交流更方便
✏ 连享会学习群-常见问题解答汇总:
✨ https://gitee.com/arlionn/WD
关于我们
课程, 直播, 视频, 客服, 模型设定, 研究设计, 暑期班
stata, plus,Profile, 手册, SJ, 外部命令, profile, mata, 绘图, 编程, 数据, 可视化
DID,RDD, PSM,IV,DID, DDD, 合成控制法,内生性, 事件研究
, 交乘, 平方项, 缺失值, 离群值, 缩尾, R2, 乱码, 结果
Probit, Logit, tobit, MLE, GMM, DEA, Bootstrap, bs, MC, TFP
, 面板, 直击面板数据, 动态面板, VAR, 生存分析, 分位数
空间, 空间计量, 连老师, 直播, 爬虫, 文本, 正则, python
Markdown, Markdown幻灯片, marp, 工具, 软件, Sai2, gInk, Annotator, 手写批注
, 盈余管理, 特斯拉, 甲壳虫, 论文重现
, 易懂教程, 码云, 教程, 知乎
连享会小程序:扫一扫,看推文,看视频……
扫码加入连享会微信群,提问交流更方便
✏ 连享会学习群-常见问题解答汇总:
✨ https://gitee.com/arlionn/WD