查看原文
其他

字符串函数总动员

爬虫俱乐部 Stata and Python数据分析 2022-03-15

本文作者:戴  雯,中南财经政法大学金融学院

文字编辑:王玉婷 

技术总编:余术玲

爬虫俱乐部云端课程

  爬虫俱乐部于2020年暑期在线上举办的Stata与Python编程技术训练营和Stata数据分析法律与制度专题训练营在不久前已经圆满结束啦~应广大学员需求,我们的课程现已在腾讯课堂全面上线,且继续提供答疑服务。现在关注公众号并在朋友圈转发推文《来腾讯课堂学Stata和Python啦》或《8月Stata数据分析法律与制度专场来啦!》,即可获得600元课程优惠券,集赞50个再领200元课程优惠券!(截图发至本公众号后台领取)原价2400元的课程,现在只要1600元!     

导读

夏末秋凉,风里秋天的味道越来越浓,大家要干劲十足地在收获的季节里积攒知识能量呀!新的一波知识就从“收割”字符串函数开始吧~Stata的数据格式分为数值型和字符串型。字符是各种文字和符号的总称,如字母、数字、标点符号、空格等,字符串则是多个字符组成的序列。面对字符串型数据的整理工作,有什么既方便又准确的处理方法呢?别着急,这不,今天小编就为大家带来了几个字符串函数,一起学习一下吧~在介绍字符串函数之前,我们先来看一看字符与字节的关系,这对后面的学习很重要哦~简单来说,字节是一种计量单位,不同形式的字符所占字节数不同,同一形式的字符在不同的Stata版本中所占的字节也可能不同,具体如下:

Stata14之前Stata14、15、16
英文字母、标点、符号、数字占1个字节占1个字节
中文标点、符号占2个字节占3个字节
中文汉字占2个字节大部分常用汉字占3个字节
从表中可以看出,Stata14前后字符与字节的关系有所差别,这是因为Stata14之前使用的是unicode编码,一个中文字符(中文符号及大部分常用汉字)占2个字节;从Stata14开始用的是utf-8编码,基础ASCII编码中的字符只占一个字节,扩展ASCII编码中的字符占两个字节,大部分常用汉字占三个字节,对于比较复杂的汉字(如扩展B、扩展C等)占4个字节。好啦好啦~废话不多说,下面我们正式进入字符串函数的学习环节~

1.strlen()

strlen()函数建立在字节的基础上,用来计算字符串中包含字节的长度,我们来看下面几个例子:

英文字母和英文符号均占1个字节,所以字符串"Stata&Python"所占字节数为12。

从Stata14开始,常用汉字占3个字节,字符串"爬虫俱乐部" 所占字节数为15。

中文的标点符号占3个字节,字符串"爬虫俱乐部,将爬虫进行到底!"中有12个中文汉字和2个中文标点,故占12×3+2×3=42个字节。

2.ustrlen()

与strlen()不同,ustrlen()建立在unicode的基础上,在unicode编码中,无论什么符号都只算一个字符,所以该函数的计算结果等同于字符串中的字符数。

3.substr(s, n1, n2)

substr(s, n1, n2)函数建立在字节的基础上,用于提取字符串某一部分的子字符串,s表示某一原字符串,n1表示开始提取字节的位置,n2表示需要提取的子字符串所占字节的长度。如果n1<0,则从字符串倒数第|n1|个字节处开始提取;如果n2=.(缺失值),则提取的是从s的第n1个字节到最后一个字节,举例来看:*从字符串"abcdefg"的第3个字节处(c)截取字节长度为2的子字符串(cd)
disp substr("abcdefg",3,2)
*从字符串"abcdefg"的倒数第3个字节处(e)截取字节长度为2的子字符串(ef)
disp substr("abcdefg",-3,2)
*从字符串"abcdefg"的倒数第3个字节处(e)截取到字符串末尾的子字符串(efg)
disp substr("abcdefg",-3,.)
*常用汉字占3个字节,从字符串"爬虫俱乐部"的第4个字节处截取字节长度为3的子字符串(虫)
disp substr("爬虫俱乐部",4,3)

4.usubstr(s,n1,n2)

usubstr(s,n1,n2)是基于unicode提取字符串中的子字符串,s表示某一原字符串,n1、n2表示从第n1个unicode字符开始,提取长度为n2的unicode字符,这里的长度相当于字符的个数。如果n1<0,则从字符串倒数第|n1|个字符处开始提取;如果n2=.(缺失值),则提取的是从s的第n1个字符到最后一个字符。为了更形象地理解,一起看看下面两个例子吧:*从字符串"abcdefg"的第3个字符处(c)截取字符数为2的子字符串(cd)
disp usubstr("abcdefg",3,2)
*从字符串"爬虫俱乐部"的第1个字符处截取字符数为2的子字符串(爬虫)
disp usubstr("爬虫俱乐部",1,2)

5.subinstr(s1,s2,s3,n)

subinstr(s1,s2,s3,n)函数用于替换子字符串,将字符串s1中的前n个子字符串s2替换成字符串s3,如果n为“.”,字符串s1中包含的s2字符串会被全部替换为s3。*将"This is an island"中的第一个"is"替换成"X"
disp subinstr("This is an island","is","X",1)
*将"This is an island"中的前两个"is"替换成"X"
disp subinstr("This is an island","is","X",2)
*将"This is an island"中的所有"is"替换成"X"
disp subinstr("This is an island","is","X",.)
结果如下:

今天关于字符串函数的介绍到这里就结束了,大家是不是觉得还不过瘾呀(>^ω^<)下一篇推文小编会接着为大家介绍一些好用的字符串函数,一起期待一下吧~



对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!往期推文推荐

用词云图看2020社科基金课题~

建议收藏!Python精选推文干货合集

xpose和sxpose,谁是卧底?

让你的数据一目了然--label命令介绍Python推文合集基础篇(下)|算法简介【小白指南】Python中有哪些数据类型?(附推文合集)轻松获取通行数据——cntraveltime命令介绍让Stata完美牵手中国地图之cnmapsearch自然语言分析——利用NLTK进行文本预处理寻找B站的最爱--8月B站全站榜爬虫cnaddress命令——实现经纬度转换为中文地址定位神器——cngcodePython入门—Spyder的简单使用Jupyter Notebook 的这些tips你了解吗?给变量名换马甲之rename命令追踪命令set trace on——解你燃眉之急爬虫大杀器 | “手把手”教你配置Selenium关于我们


微信公众号“Stata and Python数据分析”分享实用的stata、python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。

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

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存