前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python处理字符串的一些技巧

python处理字符串的一些技巧

作者头像
AsiaYe
发布2019-12-18 16:35:19
1.2K0
发布2019-12-18 16:35:19
举报
文章被收录于专栏:DBA随笔DBA随笔

python处理字符串的一些技巧

最近两个周,在MySQL方向的投入比较少,都是在看一些前人写的python脚本,之前使用python都是在django中写后端逻辑,对于python的脚本其实用的不多,今天再整理一些python脚本中使用的技巧吧。

1、文本中字符串的连接方法join

join的方法是使用一个字符串将已有的内容连接起来,下面分别演示了连接元组、列表和字典的方法:

代码语言:javascript
复制
 1元组---直接连接
 2>>> str='-'   
 3>>> seq=('a','b','c') 
 4>>> print str.join(seq)
 5a-b-c
 6
 7列表
 8>>> list=['1','2','3','4','5']
 9>>> print(''.join(list))
1012345
11如果想要保持list中的样子,可以用下面的方法:
12>>> print("'"+"','".join(list)+"'")
13'1','2','3','4','5'
14
15字典
16>>> seq = {'hello':'nihao','good':2,'boy':3,'doiido':4}
17>>> print('-'.join(seq)) 
18boy-good-doiido-hello

需要注意的是,在使用字典的连接是,本质上是对key的连接,而不是对value的连接。

既然有连接的函数,自然也有拆分的函数,它就是split函数,该函数的用法如下:

代码语言:javascript
复制
 1>>> str="name#age#score"
 2单引号和双引号的不同
 3>>> print str.split('#') 
 4['name#age#score']
 5>>> print str.split("#")
 6['name', 'age', 'score']
 7
 8括号内的1表示分割次数,将str分成两份,默认是-1,表示全部分割
 9>>> print str.split("#",1)
10['name', 'age#score']
11
12括号外的1表示取分割之后下标为1的值
13>>> print str.split("#")[1]
14age

上面的例子中,我们对字符串使用‘#’分割,可以看到,单引号和双引号的结果不同,1放在括号内和括号外的意义也不同。

还可以一次指定多个分割符:

代码语言:javascript
复制
1>>> import re
2>>> a='Beautiful, is; better*than\nugly'
3>>> # 四个分隔符为:,  ;  *  \n
4... x= re.split(',|; |\*|\n',a)
5>>> print(x)
6['Beautiful', ' is', 'better', 'than', 'ugly']
7>>> 

上面的例子中,我们使用4个分隔符来讲字符串a进行分割。

还可以将分割的结果直接保存在变量里面,如下:

代码语言:javascript
复制
1>>> addr = "123@163.com"      
2>>> usr,web = addr.split('@')
3>>> print usr,web
4123 163.com

2、文本字符串的格式化输出format方法

代码语言:javascript
复制
 1>>> "{} {}".format("hello", "world")    # 不设置指定位置,按默认顺序
 2'hello world'
 3
 4>>> "{0} {1}".format("hello", "world")  # 设置指定位置
 5'hello world'
 6
 7>>> "{1} {0} {1}".format("hello", "world")  # 设置指定位置
 8'world hello world'
 9
10针对dict
11>>> print("姓名:{name}, 年龄 {age}".format(name="yeyz", age=26))
12姓名:yeyz, 年龄 26
13
14###两个**代表解析该dict
15>>> info={"name":"yeyz","age":26}
16>>> print("姓名:{name}, 年龄 {age}".format(**info)
17姓名:yeyz, 年龄 26
18###针对list的解析
19>>> my_list = ['yeyz', 26]
20>>> print("姓名{0[0]}, 年龄 {0[1]}".format(my_list))  # "0" 是必须的
21姓名yeyz, 年龄 26
22
23还可以直接传入对象
24>>> class AssignValue(object):
25...     def __init__(self, value):
26...         self.value = value
27... 
28>>> my_value = AssignValue(6)
29>>> print('value 为: {0.value}'.format(my_value))  # "0" 是可选的
30value 为: 6

这里解释一下最后传入对象时候的__init__函数,该函数作为初始化方法可以用来设置对象属性,并给予初始值,可以是参数或者固定值,类似于C++中的构造函数,无需手动调用。

3、常用的字符串处理函数。(数量太多,这里不做演示了)

通用函数:

len()

返回对象长度

str in s

检测str存在于s中,可以理解为substring函数,返回bool值

startswith()和endswith()方法

分别用来判断字符串的前缀和后缀是否是指定的字符。

查找类函数

find:查找子串出现在字符串中的位置,如果查找失败,返回-1

index:与find函数类似,查找失败报出ValueError异常

rfind:从后向前找

rindex:和index类似,从后向前找。

大小写相关的函数

upper 字符串转换为大写

lower 字符串转换为小写

isupper 判断字符串是否都是大写

islower 判断字符串是否都是小写

swapcase 将字符串中小写转换为大写,大写转为小写

capitalize 首字母大写

istitle 判断是否是标题

最后一个istitle我们解释一下:

代码语言:javascript
复制
1>>> "Hello,World".istitle()
2True
3>>> "hello,World".istitle()
4False

我们知道,标题一般是首字母大写的,如上面的测试,如果首字母没有大写,那么则不会被判断成为标题。

4、strip函数、rstrip函数,lstrip函数,用于裁剪字符串两边

看例子:

代码语言:javascript
复制
1>>> aaa="###Hello,world##"
2>>> aaa.strip('#')
3'Hello,world'
4>>> aaa.lstrip('#')
5'Hello,world##'
6>>> aaa.rstrip('#') 
7'###Hello,world'

其中。lstrip代表left侧,左侧裁剪,r代表右侧裁剪。

举一反三一下,这个裁剪的函数其实可以用来去掉一个字符串的前缀或者后缀。

最常用的一些文本字符串处理函数大概就上面这么多了,想要用好这些函数,还是要多实践才行。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-12-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DBA随笔 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档