刚接触一门语言时,字符串是很容易遇到的, 例如要从读入或者写出, 字符串与数字间的转换等. 由于字符串, 列表和元组等类型具有一定的共性(由对象组成的序列,如字符串是字符序列), 在Python中统称为序列类型, 所以字符串的许多操作跟其他序列类型的操作是一样的.

1. 字符串的创建

字符串的创建跟其他的语言没有什么大的区别,直接 aStr='hello world' 就可以创建, 在Python中, 创建字符可以用单引号, 也可以用双引号.  特别的, 用双引号定义可以定义包含单引号的字符串, 对应的用单引号定义也可以定义包含双引号的字符串. 如 aStr = "It's OK."

2. 字符串的访问

python中字符串的访问方式主要有两种:

一种是索引操作符([]),  这与其他编程语言相似, 第一个字符的索引是0, 稍微有点不同的是python中字符串的最后一个字符的索引可以用-1表示, 也就是说可以用 aStr[-1] 获取字符串的最后一个字符, 其作用相当于 aStr[len(aStr)-1], 不过前面的方法写起来还是方便很多的.

另一种是切片操作符([:]), 切片操作符的使用有点与一般的理解(如matlab)不同,一般我们习惯是用[a : b]表示下标从a到b的字符子串,但如果要在python中表示同样的子串,应该用[a:b+1],也就是说在切片操作符中的后一个元素(b+1)是没有被包括的, 所以 aStr[0] 跟 aStr[0:1] 在字符串中是一样的. 例子如下:

#
>>>astr = 'abcd'
>>>astr[0:1]
'a'
>>>astr[0]
'a'
>>>astr[0:-1]
'abc'

利用切片操作符还可以对字符串做一些其他的操作,如逆序

>>>astr [::-1]
'dcba'

3. 字符串的运算

字符串的运算包括 成员关系操作符(in, not in),  连接操作符(+), 重复操作符(*) , 字符串的比较, 查找, 替换, 类型转换等.

成员关系操作符可以用来判断字符串中是否包含某一个子串, 若有则返回True, 无则返回False. 如 'a' in 'abc'.

连接操作符用于连接两个字符串,如 'hello' + 'world'

重复操作符可以重复一个字符串N次(用来画分割线啥的还不错, 尤其是对于我这种有强迫症,  输出的分割线一定要等长的人来说) ,如 print '*'*20.

字符串的比较可以使用比较操作符(>, <, ==), 这个没什么特别的, 除此之外也可以使用cmp()函数来笔记, 如cmp(a, b) , 如果a>b则返回1, a=b则返回0, a<b则返回-1.

字符串的查找可以用find(), 或者是index()函数, 这两个函数都是返回第一个找到的位置的下标, 不同的是,如果find()找不到则返回-1, 而index()找不到则会抛出一个ValueError的异常. 如 aStr.find('a')

字符串的替换可以使用replace(oldStr, newStr)函数, 如果字符串中存在子串则替代为新的子串, 否则不做处理. 如 aStr.replace('a', 'A')

除了上述的一些简单的运算之外, 字符串还经常与range() , len() 和 enumerate() 函数搭配使用, 用于遍历字符串中的字符. 例子如下

#
for i in range(len(astr):
print 'str[%d] = %s' %(i, astr[i]) for i, ch in enumerate(astr):
print 'str[%d] = %s' %(i, ch)

上面两个循环的输出时相同的,如下:

#output
astr[0]=a
astr[1]=b
astr[2]=c
astr[3]=d

单个字符与ASCII码的转换函数: chr() 和 ord()

chr(aInt), 将ASCII码 aInt(0到255的整数) 转化为对于的 ASCII字符

ord(aChar), 讲ASCII字符转化为ASCII码

比较常用的还有数字与字符串的相互转换:

     数字转字符串可以使用str()函数, 字符串转数字可以采用int() 和 float()函数将字符串转换成整数或者浮点数, 也可以采用 string.atoi() 和 string.atof() , 其功能是一样的.

除了上述的函数之外, 还有很多其他的内建函数, 如max(), min() 等.

4. 字符串的不变性

在使用Python中的字符串时, 还需要注意的是字符串的不变性. 在python中字符串的值是不能被改变或者修改的,要改变字符串的值,只能创建新的字符串.它在赋值操作中被限制,左值必须是一个完整的对象,如一个字符串对象,而不能是字符串对象的一部分.  简单的说就是Python中的字符串都是常量(不是很严格的说法, 便于理解吧), 不能被修改. Python中的字符串的修改实际上是新建了一个字符串常量, 然后重新赋值, 如执行aStr = aStr + 'a'  并不是将a直接复制到aStr的末尾, 而是新建了一个字符串存储结果,再将结果赋给变量aStr. 所以, 直接修改字符串中某一个字符的操作是非法的, 如 aStr[0] = 'a', 这个语句是不正确的. 要实现这个功能应该使用应该用 aStr = 'a' + aStr[1:]

附: 字符串类型内建函数( import string )




参考资料: <<Python核心编程(第二版)>>

python学习之初识字符串的更多相关文章

  1. Python学习-第二天-字符串和常用数据结构

    Python学习-第二天-字符串和常用数据结构 字符串的基本操作 def main(): str1 = 'hello, world!' # 通过len函数计算字符串的长度 print(len(str1 ...

  2. Python学习2——使用字符串(完整版)

    """ 在C语言入门的时候字符串没有好好学习,导致后期语言根本没有入门, 更导致之后大量的codeing时间浪费,效率低下. 因此,借助这次Python入门,好好地将字符 ...

  3. python学习笔记(字符串操作、字典操作、三级菜单实例)

    字符串操作 name = "alex" print(name.capitalize()) #首字母大写 name = "my name is alex" pri ...

  4. python学习笔记 - 初识socket

    socket socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. sock ...

  5. Python学习笔记3—字符串

    原始字符串 使用\转义或者r,这种方法在网站设置网站目录结构的时候非常管用. >>> dos="c:\news" >>> print dos c ...

  6. 【Python学习笔记】字符串操作

    字符串的表示 python中的字符串是一个常量,可以使用单引号'',双引号""或三引号""" """来创建一个字符串常量 ...

  7. Python学习笔记(3)-字符串

    创建字符串 一对单引号或双引号 >>> 'hello world' 'hello world' >>> "hello world" 'hello ...

  8. Python学习杂记_3_字符串操作的常用方法

    字符串操作 字符串是可以通过下标来进行取值的,但是由于字符串是不可变变量,不能通过下标来修改它的值(形式如 字符串[下标]),下标从0开始,最大下标值是字符串长度减1,即len(string)-1 P ...

  9. Python学习笔记:字符串

    字符串 字符串定义:字符串可以使用一对单引号.双引号或三引号来定义,即便是单个字符也会当做字符串来处理(Python中没有字符类型,单个字符也就是只有一个字符的字符串而已). 原始字符串:字符串中反斜 ...

随机推荐

  1. 此博客不再更新和分享UiPath文章

    由于版权问题,将不再分享我的笔记 警告:任何人不得拷贝及挪用我的uipath笔记作为商业用途,一旦发现,立刻发律师函,请知悉及慎重!!!!

  2. python - 列表,元组

    1.列表       定义:能装对象的对象     在python中使用[] 来描述列表,内部元素用逗号隔开,对数据类型没有要求.     列表存在索引和切片,和字符串的操作是一样的   2.列表相关 ...

  3. Ubuntu安装tomcat

    1.下载需要的tomcat二进制包(tar.gz)结尾的. https://tomcat.apache.org/download-80.cgi 2.通过xftp5 上传到指定的文件夹 3.cd进指定文 ...

  4. web前端学习python之第一章_基础语法(一)

    web前端学习python之第一章_基础语法(一) 前言:最近新做了一个管理系统,前端已经基本完成, 但是后端人手不足没人给我写接口,自力更生丰衣足食, 所以决定自学python自己给自己写接口哈哈哈 ...

  5. 小程序一个大盒子里面的盒子内容居中对其显示wxss写法

    对小程序研究感兴趣的可加(交流QQ群:604788754)入群联系群主可得到小程序教学资源. 这个案例只是想展示效果,内容部分未进行for循环绑定处理: WXML: <view class=&q ...

  6. Ubuntu16.04下安装sublime text3

    通过ppa安装,打开终端,输入以下命令: sudo add-apt-repository ppa:webupd8team/sublime-text-3 sudo apt-get update sudo ...

  7. Bootstrap 完全教程笔记

    Bootstrap CSS Bootstrap 排版 引导主体副本 为了给段落添加强调文本,则可以添加 class=”lead”,这将得到更大更粗.行高更高的文本,如下面实例所示: <h2> ...

  8. Oralce数据库的优化

    Oralce数据库的优化(面试必问) (1) 选择最有效率的表名顺序(只在基于规则的优化器中有效):ORACLE 的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 ...

  9. 26. Remove Duplicates from Sorted Array★

    题目内容: Given a sorted array, remove the duplicates in place such that each element appear only once a ...

  10. java.sql.SQLException: Value '0000-00-00' can not be represented as java.sql.Timestamp

    java.sql.SQLException: Value '0000-00-00' can not be represented as java.sql.Timestamp 错误是因为时间类型出现了0 ...