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 相关文章推荐
Django中实现一个高性能计数器(Counter)实例
Jul 09 Python
Python查找相似单词的方法
Mar 05 Python
实践Python的爬虫框架Scrapy来抓取豆瓣电影TOP250
Jan 20 Python
Python中类型检查的详细介绍
Feb 13 Python
Django自定义用户认证示例详解
Mar 14 Python
对Python中DataFrame按照行遍历的方法
Apr 08 Python
强悍的Python读取大文件的解决方案
Feb 16 Python
python+pyqt5实现图片批量缩放工具
Mar 18 Python
python实现用类读取文件数据并计算矩形面积
Jan 18 Python
Python加载数据的5种不同方式(收藏)
Nov 13 Python
Python 将代码转换为可执行文件脱离python环境运行(步骤详解)
Jan 25 Python
Python爬取酷狗MP3音频的步骤
Feb 26 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
php中字符集转换iconv函数使用总结
2014/10/11 PHP
PHP strip_tags保留多个HTML标签的方法
2016/05/22 PHP
ThinkPHP使用getlist方法实现数据搜索功能示例
2017/05/08 PHP
PHP使用文件锁解决高并发问题示例
2018/03/29 PHP
php实现等比例压缩图片
2018/07/26 PHP
浅谈laravel 5.6 安装 windows上使用composer的安装过程
2019/10/18 PHP
PHP中迭代器的简单实现及Yii框架中的迭代器实现方法示例
2020/04/26 PHP
phpstorm最新激活码分享亲测phpstorm2020.2.3版可用
2020/11/22 PHP
jQuery学习3:操作元素属性和特性
2010/02/07 Javascript
jquery插件开发方法(初学者)
2012/02/03 Javascript
select标记美化--JS式插件、后期加载
2013/04/01 Javascript
JS扩展方法实例分析
2015/04/15 Javascript
js性能优化技巧
2015/11/29 Javascript
正则表达式优化JSON字符串的技巧
2015/12/24 Javascript
详解javascript事件冒泡
2016/01/09 Javascript
浅析jQuery事件之on()方法绑定多个选择器,多个事件
2016/04/27 Javascript
AngularJS 整理一些优化的小技巧
2016/08/18 Javascript
详解如何制作并发布一个vue的组件的npm包
2018/11/10 Javascript
微信小程序实现随机验证码功能
2018/12/20 Javascript
微信小程序在ios下Echarts图表不能滑动的问题解决
2019/07/10 Javascript
微信JS-SDK实现微信会员卡功能(给用户微信卡包里发送会员卡)
2019/07/25 Javascript
vue搜索页开发实例代码详解(热门搜索,历史搜索,淘宝接口演示)
2020/04/11 Javascript
python使用点操作符访问字典(dict)数据的方法
2015/03/16 Python
python保存二维数组到txt文件中的方法
2018/11/15 Python
Django 项目重命名的实现步骤解析
2019/08/14 Python
丝芙兰香港官网:Sephora香港
2018/03/13 全球购物
Glamest意大利:女性在线奢侈品零售店
2019/04/28 全球购物
IFCHIC台湾:欧美国际设计师品牌
2019/05/18 全球购物
英国豪华装饰照明品牌的在线零售商:Inspyer Lighting
2019/12/10 全球购物
《翻越远方的大山》教学反思
2014/04/13 职场文书
网球场地租赁协议范本
2014/10/07 职场文书
升职感谢信
2015/01/22 职场文书
大学生社会实践活动总结报告
2015/05/06 职场文书
工作态度怎么写
2015/06/25 职场文书
个人业务学习心得体会
2016/01/25 职场文书
详细介绍Java中的CyclicBarrier
2022/04/13 Java/Android