note 8 字符串
字符串String
一个字符的序列
使用成对的单引号或双引号括起来
或者三引号""" 和 ''' 表示块注释
字符串运算
长度 len()函数
first_name = 'Michael'
len(first_name)
>>>7
拼接 +
name = first_name + 'Jordan'
print name
>>>Michael Jordan
重复 *
name * 3
>>>'Michael Jordan Michael Jordan Michael Jordan'
必须乘整数、只能字符串
成员运算符 in
判断一个字符串是否是另一个字符串的子串
返回值:True 或者 False
for 语句
枚举字符串的每个字符
计算一个字符串中元音字母的个数
def vowles_count(s):
count = 0
for c in s:
if c in 'aeiou':
count += 1
return count
print vowles_count('Hello world')
字符串索引 index
+字符串中每个字符都已一个索引值,也叫下标
+索引从0(前向)或-1(后向)开始
[ ]
切片 Slicing
+选择字符串的子序列
语法 [start : finish]
start: 子序列开始位置的索引值
finish: 子序列结束位置的下一个字符的索引值
如果不提供start或者finish,默认start为第一个字符开始,finish为最后一个字符
计数参数 Count by Argument
+接收三个参数
[start : finish : countBy]
默认countBy为1
my_str = 'hello world'
my_str[0:11:2]
>>>'hlowrd'
+获得逆字符串
-1
my_str = 'spam'
reverse_str = my_str[::-1]
print reverse_str
>>>maps
字符串是不可变的 Immutable
+一旦生成,则内容不能改变
+通过切片等操作,生成一个新的字符串
字符串方法 Methods
+方法
+对象提供的函数
+注意
+replace 方法返回一个新的字符串,原字符串内容不变
+新字符串重新赋值给原来的变量
更多字符串方法
find
split
其他方法
dir(str)
...
人名游戏
人名列表文件names.txt,将每个人名转换为首字母大写,其他字母小写的格式
line不仅包括本行内容,还包括回车,输出本行内容后,还输出回车
.strip() 去掉字符串开始和结尾的空格、回车等
.title() 字符串变成首字母大写,其余字母小写
f = open('names.txt','r')
for line in f:
line = line.strip()
print line.title()
f.close ()
编写一个名为is_palindrome的函数判断一个人名是否为回文,入“BOB”
1.
f = open('names.txt','r')
def is_palindrome(name):
low = 0
high = len(name) - 1
while low < high:
if name[low] != name[high]:
return False
low += 1
high -= 1
return True
for line in f:
line = line.strip()
if is_palindrome(line):
print line
f.close ()
2.递归实现
f = open('names.txt','r')
def is_palindrome_rec(name):
if len(name) <= 1:
return True
else:
if name[0] != name[-1]:
return False
else:
return is_palindrome_rec(name[1:-1])
for line in f:
line = line.strip()
if is_palindrome_rec(line):
print line
f.close ()
字符串比较
+任何一个字符都对应一个数字
ASCII (American Standard Code for Information Interchange)
+直接比较对应数字的大小
字典序 Dictionary order
+首先比较两个字符串的第一个字符
+如果相同,则比较下一个字符
+如果不同,则字符串的大小关系由这两个字符的关系决定
+如果其中一个字符为空(较短),则其更小
编写函数 is_ascending,判断一个人名的字母是否为升序排列(允许重复字母)
f = open('names.txt','r')
def is_ascending(name):
p = name[0]
for c in name:
if p > c:
return False
p = c
return True
for line in f:
line = line.strip()
if is_ascending(line):
print line
f.close ()
字符串格式化 Formatting
+输出更规格的结果
format方法,如:
+括号的格式
{field name:align width.precision type}
域名:对齐方式 整数-占用宽度.精度 类型
对齐方式:> 向右对齐,< 向左对齐
正则表达式 Regular Expressions
+判断一个人名(name)是否满足下列模式
c?a ?表示任意一个字符
c?a *表示任意多个字符
+正则表达式 用来描述字符串的模式
.表示任意字符
\d+ 表示一系列数字
[a-z]表示一个小写字母
....
判断一个人名是否含有C.A模式
import re
f = open('names.txt','r')
for line in f:
line = line.strip()
pattern - 'C.A'
result = re.search(pattern,line)
if result:
print 'Name is {}'.format(line)
f.close()
正则表达式非常强大
note 8 字符串的更多相关文章
- 【JS Note】字符串截取
Js中字符截取常用的三个函数:slice().substring().substr(). slice(): slice(start,[end]) 第一个参数代表开始位置,第二个参数代表结束位置的下一个 ...
- 五:python 对象类型详解二:字符串(上)
一:常量字符串 常量字符串用起来相对简单,也许最复杂的事情就是在代码中有如此多的方法来编写它们. eg:单引号:'spam"m' , 双引号: “spa'm” , 三引号:‘’‘... ...
- Javascript 中 with 的替代方案和String 中的正则方法
这几天在升级自己的MVVM 框架,遇到很多小问题,就在这里统一解决了. with 语法 在代码中,要执行这么一个函数 function computeExpression(exp, scope) { ...
- C++ Base64 编码 解码
C++实现 base64 字符串编码解码(GCC编译). /** * @brief C++ base64 编解码 * @author wid * @date 2013-20-25 * * @note ...
- 3.Swift翻译教程系列——Swift基础知识
英语PDF下载链接http://download.csdn.net/detail/tsingheng/7480427 Swift是用来开发iOS和OS X应用的新语言,可是很多地方用起来跟C或者OC是 ...
- 通过PHP前端后台交互/通过ajax前端后台交互/php基础传输数据应用/简单的留言版/简单的注册账户/简单的登录页/
前 言 PHP 通过上一篇博客,注册账号与登录页面--前后台数据交互 跳转转到index主页,接下来进入主页留言板功能,通过ajax向后台传输数据,同时发表留言. 具体的内容分析如下 ...
- xml dom minidom
一. xml相关术语: 1.Document(文档): 对应一个xml文件 2.Declaration(声明): <?xml version="1.0" encoding=& ...
- atoi、itoa,strcpy,strcmp,memcpy等实现
原文:http://www.cnblogs.com/lpshou/archive/2012/06/05/2536799.html 1.memcpy.memmove.memset源码 link:http ...
- 08 Python基础数据结构
目录: 1) 列表 2) 元组 3) 字符串 4) bytes 5) bytearray 6) 字典 7) 集合 8) 冻集合 """1. 列表特性2. 创建3. 增加4 ...
随机推荐
- Raspberry Pi 安装配置 Home Assistant
家庭助理(Home Assistant)是一款基于 Python 的智能家居开源系统,支持众多品牌的智能家居设备,可以轻松实现设备的语音控制.跟踪和控制家里的所有设备, 并自动化控制,能完美的运行在树 ...
- element 多个文件上传多次http请求解决方法
第一步 action="#" 第二步 :auto-upload = "false" 第三步 给元素绑定click事件触发提交方法,注意,把其他没有用的文件都给去 ...
- nginx 带? rewrite 规则
由于需要重定向 url ,nginx需要rewrite .参考文献 http://huangqiqing123.iteye.com/blog/2083434 需求:将http://10.106.1.3 ...
- Some notes in Stanford CS106A(3)
1.If ( str1==str2 ) means if str1 and str2 are refers to the same OBJECT. But when compare string , ...
- hive -e执行出现「cannot recognize input near '<EOF>' in select clause」问题
问题现象 写了一个简单的shell脚本调用hive执行组装的sql,在执行时总是报cannot recognize input near '<EOF>' in select clause错 ...
- Springboot框架,实现请求数据解密,响应数据加密的功能。
一.简要说明: 在做这个功能的时候,参考了很多文章,也试了用过滤器解决.但总体来说还是很麻烦,所以换了另一种解决方案.直接实现RequestBodyAdvice和ResponseBodyAdvice两 ...
- 1040 mysql Too many connections
笔者在项目中遇到mysql 出现:1040 too many connections 异常,意思是超过数据库最大连接数,打不开表结构信息.笔者排除问题建议:1.查看程序代码是否存在BUG:2.检查代码 ...
- 9th week blog
1957年 约翰·巴科斯(John Backus)创建了是全世界第一套高阶语言:FORTRAN. 1959年 葛丽丝·霍普(Grace Hopper)创造了现代第一个编译器A-0 系统,以及商用电脑编 ...
- 从原型链探究Javascript这么火的原因
首先,此文是对于javascript原型链的一些私人见解,若能博君会心一笑,在下荣幸之至! 为了阐述我的理解,首先提前声明一些前置知识,欢迎指正: 栈内存和堆内存: 栈内存每个地址分配的地址长度较窄, ...
- HTML相关内容
一,HTML标签的分类 1,单标签和双标签 2,内联标签:span,b,u,i,a,img 块级标签:h1~h6,p,div,hr,ul,ol,li 二,常用标签 1,head内常用标签 标签 含 ...