二、python字符串操作符

1. 对象标准类型操作符

Python对象的标准类型操作符一共就三种:对象值的比较对象身份的比较布尔类型。其中对象值的比较主要是大于、小于、不等于等的数学比较符;对象身份的比较主要是is和is not这两个符号;布尔类型主要是not、and、or等的逻辑运算符。

字符串标准类型操作符也是这些,在做比较操作的时候,字符串是按照ASCII值的大小来比较的。

2. 序列类型操作符

切片操作符

主要分为三种,分别是正向索引、反向索引、默认索引。下图中显示索引的编号:

注意:起始/结束索引都没有指定的话会返回整个字符串,索引值指定为None,也会返回到字符串的开始或者结尾。

成员操作符

in或者not in。成员操作符判断一个字符或者一个子串是否是另一个字符串的一部分,出现则返回True,否则返回False。

写一个脚本idcheck.py,用来检测python变量。提示一些知识点:

>>> import string
>>> string.uppercase
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> string.lowercase
'abcdefghijklmnopqrstuvwxyz'
>>> string.letters
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> string.digits
'0123456789'

这里假设python变量至少由两个字符组成。

代码实现:

#! /usr/bin/python

import string

alphas = string.letters + '_'
nums = string.digits print 'Welcome to the Identifier Checker v1.0'
print 'Python variables must be at least 2 chars long' myInp = raw_input('Identifier to test? ') if len(myInp) > 1: if myInp[0] not in alphas:
print 'invalid: first symbol must be alphabetic'
else: for otherChar in myInp[1:]:
if otherChar not in alphas + nums:
print 'invalid: remaining symbols must be alphabetic'
break
else:
print 'okay as an Identifier'
else:
print 'invalid: python variables must be at least 2 chars long'

这里每次在循环的时候,都要用加号(+)字符串连接符,要开辟新的存储空间,所以效率很低。好的改进方案:

alphanums = alphas + nums
for otherChar in myInp[1:]:
if otherChar not in alphanums:

还有就是for-else循环语句,这个else语句只在for循环完整结束,没有遇到break时执行。

连接符(+)

通过连接操作符从原有字符串获得一个新的字符串。

>>> s = 'Spanish Inquisition Made Easy'
>>> import string
>>> string.upper(s[:3] + s[20])
'SPAM'

上面的方法存在性能上的问题,因为python必须为每一个参加连接操作的字符串分配新的内存,包括产生的新的字符串。所以这里推荐使用字符串格式化操作符(%),或者把所有的字符串放到一个类表中,然后用一个join()方法把他们连接在一起。

>>> '%s %s' % ('Spanish', 'Inquisition')
'Spanish Inquisition'
>>> s = ' '.join(('Spanish', 'Inquisition', 'Made Easy'))
>>> s
'Spanish Inquisition Made Easy'
>>> ('%s%s' % (s[:3], s[20])).upper()
'SPAM'

普通字符串转化为Unicode字符串

如果把一个普通字符串和一个Unicode字符串做连接处理,python自动会在连接操作前把普通字符串转化为Unicode字符串。

>>> 'Hello' + u' ' + 'World' +u'!'
u'Hello World!'

3. 只适用于字符串的操作符

格式化操作符

python风格的字符串格式化操作符,只适用于字符串类型,非常类似C语言里面的printf函数的字符串格式化。

python支持两个格式的输入参数。第一种形式是元组,第二种形式是字典类型。

先看一些字符串格式化符号和格式化操作符辅助命令:

看一些具体的例子:

>>> '%x' % 108
'6c'
>>> '%X' % 108
'6C'
>>> '%#x' % 108
'0x6c'
>>> '%f' % 1234.567890
'1234.567890'
>>> '%.2f' % 1234.567890
'1234.57'
>>> '%e' % 1234.567890
'1.234568e+03'
>>>
>>> '%+d' % 4
'+4'
>>> '%+d' % -4
'-4'
>>> 'we are at %d%%' % 100
'we are at 100%'
>>> 'Host: %s Port: %d' % ('mars',80)
'Host: mars Port: 80'
>>> 'MM/DD/YY = %02d/%02d/%d' % (2, 15, 67)
'MM/DD/YY = 02/15/67'

上面的例子用到的是元组作为输入参数,下面看一个字典类型的输入参数:

>>> 'There are %(howmany)d %(lang)s Quotation Symbols' % {'lang':'Python', 'howmany':3}
'There are 3 Python Quotation Symbols'

  

  

  

  

  

  

  

  

python学习笔记:python字符串的更多相关文章

  1. Python学习笔记--Python字符串连接方法总结

    声明: 这些总结的学习笔记,一部分是自己在工作学习中总结,一部分是收集网络中的知识点总结而成的,但不到原文链接.如果有侵权,请知会,多谢. python中有很多字符串连接方式,总结一下: 1)最原始的 ...

  2. Python学习笔记—Python基础1 介绍、发展史、安装、基本语法

    第一周学习笔记: 一.Python介绍      1.Python的创始人为吉多·范罗苏姆.1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言 ...

  3. python学习笔记-python程序运行

    小白初学python,写下自己的一些想法.大神请忽略. 安装python编辑器,并配置环境(见http://www.cnblogs.com/lynn-li/p/5885001.html中 python ...

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

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

  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学习笔记:字符串

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

  9. python学习笔记(一)---字符串与列表

    字符串的一些处理 字符串的大小写 name="lonmar hb" print(name.upper())#全大写 print(name.lower())#全小写 print(na ...

  10. 【Python学习笔记】字符串拼接方法(5种)总结

    字符串的 5 种拼接方法: “+”号 “,”号 直接连接 格式化 多行字符串拼接 第一种:“+”号 print("Hello"+"Python") 打印结果: ...

随机推荐

  1. C语言链表各类操作详解

    链表概述 链表是一种常见的重要的数据结构.它是动态地进行存储分配的一种结构.它可以根据需要开辟内存单元.链表有一个“头指针”变量,以head表示,它存放一个地址.该地址指向一个元素.链表中每一个元素称 ...

  2. (转) Virtual function

    原文地址:http://en.wikipedia.org/wiki/Virtual_function In object-oriented programming, a virtual functio ...

  3. linux下virtualenv的python版本

    virtualenv是python开发中一个重要的工具,它可以帮助我们创建一个干净的python解释环境,创建虚拟环境时,这个虚拟环境的 python版本往往是系统默认的2.x版本.别急,我们只需要一 ...

  4. 读php手册一点点心得(1)

    1.   要输出大段文本时,跳出PHP解析模式通常比将文本通过echo或print输出更有效率(手册) 2.   note :为了代码的发行及一致性,确保不要使用短标记,短标记仅通过php.ini配置 ...

  5. GTW likes gt(BC 模拟 or 优先队列)

    GTW likes gt Accepts: 54 Submissions: 782 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 13107 ...

  6. 发布(Windows)

    发布(Windows) 本篇将在这个系列演示的例子上继续记录Asp.Net Core在Windows上发布的过程. Asp.Net Core在Windows上可以采用两种运行方式.一种是自托管运行,另 ...

  7. BZOJ 2301 Problem B(莫比乌斯反演)

    http://www.lydsy.com/JudgeOnline/problem.php?id=2301 题意:给a,b,c,d,k,求gcd(x,y)==k的个数(a<=x<=b,c&l ...

  8. java生成json字符串的方法

    例1:将map对象添加一次元素(包括字符串对.数组),转换成json对象一次. 代码: package com.json; //这是使用org.json的程序: import java.util.Ha ...

  9. 一 VC2008环境中ICE的配置

    VC2008环境中ICE的配置 ICE 3.4.0的下载页面 http://www.zeroc.com/download_3_4_0.html 环境变量配置  1.Ice-3.4.0安装到c:\Ice ...

  10. [Ubuntu]在Ubuntu下搭建自己的源服务器

    1.摘要     网上有很很多关于搭建源镜像的文章,但是对于一般人来讲,用不着镜像所有的deb包,只对我们能用到的感兴趣.另外,对于一些在Ubuntu的源中没有的软件,我们也可以放在我们自己的源里,这 ...