再谈源代码只有一行时如何导入

2017-05-24 武汉大学 潘珺 爬虫俱乐部 爬虫俱乐部

     在很久很久以前,我们介绍了如何利用infix命令读入不以换行符结尾的文本文档(见推文当源代码只有一行时如何导入?——用rewrite改写文本文档)。在这篇推文中,rewrite命令隆重登场,rewrite命令将源代码后面加上回车符,具体是通过拼match接只有回车符的文本文档到原文本文档中实现的。前一段时间,我们又介绍了import delimited,也可以解决这一问题(见推文用infix读入不完整?import delimited试试吧)。此外,在培训中还介绍过用file命令在源代码最后加上换行符。

这些“简单”、“粗暴”、“直接”的方式撩到了不少爬虫fans,深受同仁们喜爱,但一切都没有结束……这次我们将介绍一个更简单的方法——fileread()函数。

我们先用file命令生成一个命名为“文档”的txt文件,这个txt文件只有一行,内容为爬虫俱乐部,且不以换行符结尾。当尝试用infix命令读入txt文档时,发现无法读入。

tempname temp

file open `temp' using 文档.txt, text write replace

file write `temp' "爬虫俱乐部"

file close `temp'

infix strL v 1-1000 using 文档.txt, clear



然后我们尝试使用fileread()函数读入“文档.txt”,使用fileread()函数时,将要读入的文档的名称填入括号内即可。

clear

set obs 1

gen v = fileread("文档.txt")

list v

但是使用fileread()函数需要注意以下两点。其一,读入文本文档的话,会将所有内容读入同一个单元格内。详情如下所示:首先我们用file命令给文档再加上一行。然后再读入刚刚更新后的文档。

tempname temp

file open `temp' using 文档.txt, text write append

file write `temp' _n

file write `temp' "将爬虫进行到底"

file close `temp'

clear

set obs 2

gen v = fileread("文档.txt")

list

从读入的结果来看,fileread()函数不能够识别换行符,未能将两行字符分别读入到两个观测值中,而是将文本内容被读入到了同一个单元格内。

使用fileread()函数时还需要注意的是:命令执行时,stata是不会报错的,比如当我们读入一个不存在的文档1.txt

clear

set obs 1

gen v = fileread("文档1.txt")

那么怎么知道是否出错了呢?铛铛铛,filereaderror()函数闪亮登场,这个函数可以读取使用fileread()函数的报错信息。

di filereaderror(v)

这样我们就可以看到fileread()函数的报错返回值601了。

使用fileread()函数读入文档是不是很便捷呢~那大家一起快点用起来吧~


以上就是今天给大家分享的内容了,说得好就赏个铜板呗!有钱的捧个钱场,有人的捧个人场~。

应广大粉丝要求,爬虫俱乐部的推文公众号打赏功能可以开发票啦,累计打赏超过1000元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫。第一批发票已经寄到各位小主的手中,大家快来给小爬虫打赏呀~

                     文字编辑:司海涛

技术总编:刘贝贝



往期推文推荐:

1.高校学术大神:你的导师上榜了吗?

2.中国高校财经、管理与综合类期刊灌水排行榜

3.关于RTF你不知道的命令之番外篇

4.免费事件研究,一片片从邮局寄来

5.免费的股价同步性,一片片从邮局寄来

6.Stata叫你回家听音乐了!

7.一言不合就用stata写邮件(Outlook/Foxmail)

8.听说你想知道怎么用stata画地图?

9.I have a Stata, I have a python

10.I have a Stata, I have a Python之二——pdf转word




关于我们

微信公众号“爬虫俱乐部”分享实用的stata命令,欢迎转载、打赏。爬虫俱乐部是由李春涛教授领导下的研究生及本科生组成的大数据分析和数据挖掘团队。

此外,欢迎大家踊跃投稿,介绍一些关于stata的数据处理和分析技巧。

投稿邮箱:statatraining@163.com

投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿”+“推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到关于stata分析数据的问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。

欢迎关注爬虫俱乐部

微信扫一扫
关注该公众号