python基础教程(五)
字符串基本操作
所有标准的序列操作(索引、分片、乘法、判断成员资格、求长度、取最小值和最大值)对字符串同样适用,前面已经讲述的这些操作。但是,请注意字符串都是不可变的。
字符串的方法:
字符串从string 模块中“继承”了很多方法,这里只介绍一些特别有用的。
1、find
find 方法可以在一个较长的字符串中查找子字符串。它返回子串所在位置的最左端索引。如果没有找到则返回-1.

>>> 'with a moo-moo here. and a moo-moo ther'.find('moo')
7
>>> title = "Monty Pyhon's Flying Circus"
>>> title.find('Monty')
0
>>> title.find('Python')
-1

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

>>> seq = ['1','2','3','4','5']
>>> sep = '+'
>>> 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 方法返回字符串的小写字母版。
如果想要编写“不区分大小写”的代码的话,那么这个方法就派上用场了-----代码会忽略大小写状态。
>>> 'Trondheim Hammer Dance'.lower()
'trondheim hammer dance'
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']
>>> '/usr/bin/env'.split('/')
['', 'usr', 'bin', 'env']
>>> 'using the default'.split()
['using', 'the', 'default']

6、strip
strip 方法返回去除两侧(不包含内部)空格的字符串:
>>> ' internal white space is kept '.strip()
'internal white space is kept'
字典
字典的使用
现实中的字段及在python中的字段都进行了构建,从而可以轻松查到某个特定的词语(键),从而找到它的意义(值)。
某些情况下,字典比列表更加适用:
# 表征游戏棋盘的状态,每个键都是由坐标值组成的元组;
# 存储文件修改次数,用文件名作为键;
# 数字电话/地址本
创建一个人名列表,以及四位的分机号码:
>>> names = ['zhangsan','lisi','wangwu','sunliu']
>>> numbers = ['2313','9102','3158','4326']
#通过下下方法查询
>>> numbers[names.index('zhangsan')]
'2313'
创建和使用字典
字典可以通过下面方式创建
>>> phonebook = {'zhangsai':'2313','lisi':'9102','wangwu':'3158'}
字典由多个键及与其对应的值构成,在上例中,名字是键,电话号码是值。
dict函数
可以用dict 函数,通过其他映射(比如其他字典)或(键,值)这样的序列对建立字典。

>>> items = [('name','gumby'),('age',42)]
>>> d = dict(items)
>>> d
{'age': 42, 'name': 'gumby'}
>>> d['name']
'gumby'

dict函数也可以通过关键字参数来创建字典,如下例所示:
>>> d = dict(name ='gumby', age=42)
>>> d
{'age': 42, 'name': 'gumby'}
字典示例:

#简单数据库
#使用人名作为键的字典,每个人用另一个字典表示,其键‘phone’和‘addr’分别表示他们的电话号和地址,
people ={
'zhangsan':{
'phone':'2341',
'addr':'foo drive 23'
},
'lisi':{
'phone':'9102',
'addr':'bar street 42'
},
'wangwu':{
'phone':'3158',
'addr':'baz avenue 90'
}
}
#针对电话号码和地址使用的描述性标签,会在打印输出的时候用到
labels = {
'phone':'phone number',
'addr':'address'
}
name = raw_input('Name:')
#查找电话号码还是地址? 使用正确的键:
request = raw_input('phone number(p) or address (a)?')
#使用正确的键:
if request == 'p':key = 'phone'
if request == 'a':key = 'addr'
#如果名字是字典中的有效键才打印信息:
if name in people: print "%s's %s is %s." %(name, labels[key], people[name][key])
------------------------
#输入内容
>>>
Name:zhangsan
phone number(p) or address (a)?p
#打印结果
zhangsan's phone number is 2341.

python基础教程(五)的更多相关文章
- python基础教程项目五之虚拟茶话会
python基础教程项目五之虚拟茶话会 几乎在学习.使用任何一种编程语言的时候,关于socket的练习从来都不会少,尤其是会写一些局域网的通信的东西.所以书上的这个项目刚好可以练习一下socket编程 ...
- Python 基础教程 —— 网络爬虫入门篇
前言 Python 是一种解释型.面向对象.动态数据类型的高级程序设计语言,它由 Guido van Rossum 于 1989 年底发明,第一个公开发行版发行于 1991 年.自面世以后,Pytho ...
- 改写《python基础教程》中的一个例子
一.前言 初学python,看<python基础教程>,第20章实现了将文本转化成html的功能.由于本人之前有DIY一个markdown转html的算法,所以对这个例子有兴趣.可仔细一看 ...
- .Net程序员之Python基础教程学习----列表和元组 [First Day]
一. 通用序列操作: 其实对于列表,元组 都属于序列化数据,可以通过下表来访问的.下面就来看看序列的基本操作吧. 1.1 索引: 序列中的所有元素的下标是从0开始递增的. 如果索引的长度的是N,那么所 ...
- python基础教程笔记—即时标记(详解)
最近一直在学习python,语法部分差不多看完了,想写一写python基础教程后面的第一个项目.因为我在网上看到的别人的博客讲解都并不是特别详细,仅仅是贴一下代码,书上内容照搬一下,对于当时刚学习py ...
- python基础教程(一)
之所以选择py交易有以下几点:1.python是胶水语言(跨平台),2.python无所不能(除了底层),3.python编写方便(notepad++等文本编辑器就能搞事情),4.渗透方面很多脚本都是 ...
- Python基础教程2上的一处打印缺陷导致的代码不完整#1
#1对代码的完善的 出现打印代码处缺陷截图: 图片上可以看到,定义的request根本没有定义它就有了.这个是未定义的,会报错的,这本书印刷问题,这个就是个坑,我也是才发现.花了点时间脱坑. 现在发完 ...
- python基础教程(第二版)
开始学习python,根据Python基础教程,把里面相关的基础章节写成对应的.py文件 下面是github上的链接 python基础第1章基础 python基础第2章序列和元组 python基础第3 ...
- python基础教程1:入门基础知识
写在系列前,一点感悟 没有梳理总结的知识毫无价值,只有系统地认真梳理了才能形成自己的知识框架,否则总是陷入断片儿似的学习-遗忘循环中. 学习方法真的比刻苦"傻学"重要多了,而最重要 ...
- Python基础教程-第3版(文字版) 超清文字-非扫描版 [免积分、免登录]
此处免费下载,无需账号,无需登录,无需积分.收集自互联网,侵权通知删除. 点击下载:Python基础教程-第3版 备用下载:Python基础教程-第3版
随机推荐
- Apache FtpServer 实现文件的上传和下载
1 下载需要的jar包 Ftp服务器实现文件的上传和下载,主要依赖jar包为: 2 搭建ftp服务器 参考Windows 上搭建Apache FtpServer,搭建ftp服务器 3 主要代码 在ec ...
- foreach是怎么实现遍历的
using System; using System.Collections; using System.Collections.Generic; using System.Linq; using S ...
- c#中Class和Struct使用与性能的区别
在Unity中很多已经定义为结构体的数据结构 Vector2, Vector3 和 Vector4 Rect Color和Color32 Bounds Touch 1.Class为引用类型,Str ...
- 微信小程序开发基础知识总结
微信小程序在无论在功能.文档及相关支持方面,都是优于前面几种微信账号类型,它提供了很多原生程序才有的接口,使得我们的小程序在很多方面突破H5页面应用的限制,更加接近原生程序的功能,因此微信小程序具有很 ...
- Angular4.0学习笔记 从入门到实战打造在线竞拍网站学习笔记之二--路由
Angular4.0基础知识见上一篇博客 路由 简介 接下来学习路由的相关知识 本来是不准备写下去的,因为当时看视频学的时候感觉自己掌握的不错 ( 这是一个灰常不好的想法 ) ,过了一段时间才发现An ...
- Git的一些知识
Git Git的特点: Git存储的是文件快照, 即整个文件内容, 并保存指向快照的索引 分布式 原理 这个之前面试实习的时候被问到过, 搞懂基本原理还是很重要的 Git的目录结构在执行git ini ...
- 数据库中间件 Sharding-JDBC 源码分析 —— SQL 解析(三)之查询SQL
- HDU5723 Abandoned country (最小生成树+深搜回溯法)
Description An abandoned country has n(n≤100000) villages which are numbered from 1 to n. Since aban ...
- python--DenyHttp项目(1)--GUI:tkinter☞ module 'tkinter' has no attribute 'messagebox'
AttributeError: module 'tkinter' has no attribute 'messagebox' improt tkinter from tkinter import * ...
- java大数常用的方法
创建大数对象: BigInteger a=new BigInteger("123"); BigInteger a=BigInteger.valueOf(); 常用方法: multi ...