Python入门篇之字符串


Posted in Python onOctober 17, 2014

所有标准的序列操作对字符串都适用,但字符串是不可变的

字符串常量:

单引号:‘spa"m'

双引号:"spa'm"

三引号:'''...spam...''',"""...spam..."""

转义字符:"s\tp\na\om"

Raw字符串:r"C:\new\test.spm"

Unicode字符串:u'eggs\u0020spam

单双引号是一样的
单双引号可以互换,字符常量表达式可以用两个单引号或两个双引号来表示--两种形式同样有效返回相同类型的对象:

>>> 'zxcvbn',"zxcvbn"

('zxcvbn', 'zxcvbn')

>>> #不适用转义字符就可以实现在一个字符串中包含其余种类 的引号

>>> 'knight"s',"knight's"

('knight"s', "knight's")

可以自动在任意的表达式中合并相邻的字符串常量,尽管也可以使用+操作符实现:

>>> title="sdfsd"'dfg'"fgfd"

>>> title

'sdfsddfgfgfd'

字符串的格式化使用字符%来实现:

在%的左侧放置一个字符串,右侧放置希望格式化的值,可以使用一个值,也可以使用多个值的元组或字典

>>> format="Hello. %s. %s enough for ya?"

>>> values=('world','Hot')

>>> print format % values

Hello. world. Hot enough for ya?

如果需要转换的元组作为转换表达式的一部分存在,那么必须将它用圆括号括起来,以免出错

长字符串、原始字符串
1、长字符串

如果需要写一个非常长的字符串,需要跨多行,则可以使用三个引号代替普通引号

>>> print '''this is

a

very long

string'''

this is

a

very long

string

如果一行之中最后一个字符是反斜线,那么换行符本身就“转义”了,也就是被忽略了

>>> print "hello.\

world!"

hello.world!

>>> #这个用法也适用表达式和语句

>>> 1+2+\

      4+5

12

>>> print \

      'hello.world'

hello.world

2、原始字符串

原始字符串以r开头,可以在原始字符串中放入任何字符,最后输出的字符串包含了转义所用的反斜线,但是不能在字符串结尾输入反斜线:

>>> print \

      'hello.world'

hello.world

>>> print r'Let\'s go!'

Let\'s go!

>>> print r'this is illegal\'

SyntaxError: EOL while scanning string literal

索引与分片

字符串的字符是通过索引来提取的,将获得在特定位置的一个字符的字符串。

Python偏移量是从0开始的,并比字符串的长度小1,还支持类似在字符串中使用负偏移这样的方法从序列中获取元素,负偏移认作是从结束处反向计数

当使用一对冒号分隔的偏移索引字符串这样的序列对象时,将获取从下边界直到但不包括上边界的所有元素

索引(s[i])获取特定偏移的元素:

第一个元素的偏移为0

负偏移索引意味着从最后或右边反向进行计数

s[0]获取第一个元素

s[-2]获取了倒数第二个元素

分片(s[i:j])提取对应的部分作为一个序列:

上边界并不包含在内

分片的边界默认为0和序列的长度,如果没有给出的话

s[1:3]获取从偏移为1的元素,直到但不包括偏移为3的元素

s[1:]获取了从偏移为1直到末尾之间的元素

s[:3]获取了从偏移为0直到但是不包括偏移为3之间的元素

s[:-1]获取了从偏移为0直到但是不包括最后一个元素之间的元素

s[:]获取了从偏移0到末尾之间的元素

>>> s='spam'

>>> s[0],s[-2]

('s', 'a')

>>> s[1:3],s[1:],s[:-1]

('pa', 'pam', 'spa')

>>> s[0],s[-2]

('s', 'a')

扩展分片:第三个限制值

分片表达式增加了一个可选的第三个索引,用作步进X[I:J:K]表示:索引X对象中的元素,从偏移为I直到偏移为J-1,每隔K元素索引一次

>>> s='abcdefghijklmnop'

>>> s[1:10:2]

'bdfhj'

>>> s[::2]

'acegikmo'

>>> s='hello'

>>> s[::-1]

'olleh'

>>> s[4:1:-1]

'oll'

字符串转换工具

>>> '42'+1

Traceback (most recent call last):

  File "<pyshell#40>", line 1, in <module>

    '42'+1

TypeError: cannot concatenate 'str' and 'int' objects

>>> int('42'),str(42)

(42, '42')

>>> repr(42),'42'

('42', '42')

>>> s='42'

>>> i=1

>>> s+i

Traceback (most recent call last):

  File "<pyshell#45>", line 1, in <module>

    s+i

TypeError: cannot concatenate 'str' and 'int' objects

>>> int(s)+i

43

>>> s+str(i)

'421'

>>> #类似也可以把浮点数转换成字符串或把字符串转换成浮点数

>>> str(3.1415),float("1.3")

('3.1415', 1.3)

>>> text='1.23E-10'

>>> float(text)

1.23e-10

字符串代码转换

单个字符也可以通过将其传给内置的ord函数转换为其对应的ASCII码,chr函数则执行相反的操作:

>>> ord('s')

115

>>> chr(115)

's'

字符串方法

字符串比列表的方法还要丰富很多,因为字符串从string模块中“继承”了很多方法,本篇文章只介绍一些特别有用的字符串方法

 1、find

find方法可以在一个较长的字符串中查找一个子字符串,它返回子串所在位置的最左端索引,如果没有找到则返回-1

>>> 'with a moo-moo here, and a moo-moo there'.find('moo')

7

>>> title="Monty Python's Flying Cirus"

>>> title.find('Monty')

0

>>> title.find('Python')

6

>>> title.find('Zirquss')

-1

这个方法可以接受可选的起始点和结束点参数:

>>> subject='$$$ Get rich now!!! $$$'

>>> subject.find('$$$')

0

>>> subject.find('$$$',1)

20

>>> subject.find('!!!')

16

>>> subject.find('!!!',0,16)

-1

2、join

join方法是非常重要的字符串方法,它是split方法的逆方法,用来在队列中添加元素:

>>> seq=[1,2,3,4,5]

>>> sep='+'

>>> sep.join(seq)
Traceback (most recent call last):

  File "<pyshell#15>", line 1, in <module>

    sep.join(seq)

TypeError: sequence item 0: expected string, int found

>>> seq=['1','2','3','4','5']

>>> sep.join(seq)

'1+2+3+4+5'

>>> dirs='','usr','bin','env'
>>> '/'.join(dirs)

'/usr/bin/env'

>>> print 'C:'+'\\'.join(dirs)

C:\usr\bin\env

3、lower

lower方法返回字符串的小写字母版

>>> 'HDWUD HDJHS LKJDS'.lower()

'hdwud hdjhs lkjds'

4、replace

replace方法返回某字符串的所有匹配项均被替换后得到字符串

>>> 'This is a test'.replace('is','eez')

'Theez eez a test'

5、split

它是join的逆方法,用来将字符串分割成序列

>>> '1+2+3+4+5'.split('+')

['1', '2', '3', '4', '5']

>>> 'C:\usr\bin\env'.split('/')

['C:\\usr\x08in\\env']

>>> 'Using the default'.split()

['Using', 'the', 'default']

注意:如果不提供任何分隔符,程序会把所有的空格作为分隔符

6、strip

strip方法返回去除两侧(不包含内部)空格的字符串:

>>> '     internal whitespace is kept     '.strip()

'internal whitespace is kept'

也可指定需要去除的字符,将它们列为参数即可:

>>> '*** SPAM * for * everyone!!! ***'.strip(' *!')

'SPAM * for * everyone'

注意:只会去除两侧的字符

7、translate

translate方法和replace方法一样,可以替换字符串中的某些部分,但是和前者不同的是,translate方法只处理单个字符

Python 相关文章推荐
python实现类的静态变量用法实例
May 08 Python
快速了解Python中的装饰器
Jan 11 Python
pandas 选择某几列的方法
Jul 03 Python
查看python下OpenCV版本的方法
Aug 03 Python
python3.6利用pyinstall打包py为exe的操作实例
Oct 31 Python
Django框架文件上传与自定义图片上传路径、上传文件名操作分析
May 10 Python
OpenCV3.0+Python3.6实现特定颜色的物体追踪
Jul 23 Python
对pytorch的函数中的group参数的作用介绍
Feb 18 Python
Python通过正则库爬取淘宝商品信息代码实例
Mar 02 Python
卸载tensorflow-cpu重装tensorflow-gpu操作
Jun 23 Python
pycharm激活码免费分享适用最新pycharm2020.2.3永久激活
Nov 25 Python
使用python创建股票的时间序列可视化分析
Mar 03 Python
Python入门篇之列表和元组
Oct 17 #Python
Python入门篇之对象类型
Oct 17 #Python
Python入门篇之编程习惯与特点
Oct 17 #Python
python中正则表达式的使用详解
Oct 17 #Python
基于python编写的微博应用
Oct 17 #Python
python连接oracle数据库实例
Oct 17 #Python
Python 检查数组元素是否存在类似PHP isset()方法
Oct 14 #Python
You might like
一些星际专用术语解释
2020/03/04 星际争霸
玛琪朵 Macchiato
2021/03/03 咖啡文化
用PHP和ACCESS写聊天室(二)
2006/10/09 PHP
自动把纯文本转换成Web页面的php代码
2009/08/27 PHP
php快速url重写更新版[需php 5.30以上]
2010/04/25 PHP
PHP采用XML-RPC构造Web Service实例教程
2014/07/16 PHP
简单谈谈PHP中strlen 函数
2016/02/27 PHP
基于Laravel实现的用户动态模块开发
2017/09/21 PHP
PHP使用POP3读取邮箱接收邮件的示例代码
2020/07/08 PHP
javascript AutoScroller 函数类
2009/05/29 Javascript
向大师们学习Javascript(视频与PPT)
2009/12/27 Javascript
JS实现iframe编辑器光标位置插入内容的方法(兼容IE和Firefox)
2016/06/24 Javascript
Angular中实现树形结构视图实例代码
2017/05/05 Javascript
详解VueJs中的V-bind指令
2018/05/03 Javascript
Vue数据双向绑定原理及简单实现方法
2018/05/18 Javascript
解决LayUI表单获取不到data的问题
2018/08/20 Javascript
vue打包使用Nginx代理解决跨域问题
2018/08/27 Javascript
微信小程序实现预览图片功能
2020/10/22 Javascript
深入理解Vue.js轻量高效的前端组件化方案
2018/12/10 Javascript
Echart折线图手柄触发事件示例详解
2018/12/16 Javascript
React+TypeScript+webpack4多入口配置详解
2019/08/08 Javascript
简单谈谈javascript高级特性
2019/09/04 Javascript
python实现斐波那契递归函数的方法
2014/09/08 Python
完美解决Pycharm无法导入包的问题 Unresolved reference
2018/05/18 Python
给我一面国旗 python帮你实现
2019/09/30 Python
python uuid生成唯一id或str的最简单案例
2021/01/13 Python
十一个高级MySql面试题
2014/10/06 面试题
连锁经营管理专业大学生求职信
2013/10/30 职场文书
公司大门门卫岗位职责
2014/06/11 职场文书
十佳党员事迹材料
2014/08/28 职场文书
保洁员岗位职责
2015/02/04 职场文书
个人党性锻炼总结
2015/03/05 职场文书
《称赞》教学反思
2016/02/17 职场文书
详解CSS伪元素的妙用单标签之美
2021/05/25 HTML / CSS
python基础之函数的定义和调用
2021/10/24 Python
Nginx如何获取自定义请求header头和URL参数详解
2022/07/23 Servers