字符串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 字符串的更多相关文章

  1. 【JS Note】字符串截取

    Js中字符截取常用的三个函数:slice().substring().substr(). slice(): slice(start,[end]) 第一个参数代表开始位置,第二个参数代表结束位置的下一个 ...

  2. 五:python 对象类型详解二:字符串(上)

    一:常量字符串 常量字符串用起来相对简单,也许最复杂的事情就是在代码中有如此多的方法来编写它们. eg:单引号:'spam"m'   , 双引号: “spa'm” , 三引号:‘’‘... ...

  3. Javascript 中 with 的替代方案和String 中的正则方法

    这几天在升级自己的MVVM 框架,遇到很多小问题,就在这里统一解决了. with 语法 在代码中,要执行这么一个函数 function computeExpression(exp, scope) { ...

  4. C++ Base64 编码 解码

    C++实现 base64 字符串编码解码(GCC编译). /** * @brief C++ base64 编解码 * @author wid * @date 2013-20-25 * * @note ...

  5. 3.Swift翻译教程系列——Swift基础知识

    英语PDF下载链接http://download.csdn.net/detail/tsingheng/7480427 Swift是用来开发iOS和OS X应用的新语言,可是很多地方用起来跟C或者OC是 ...

  6. 通过PHP前端后台交互/通过ajax前端后台交互/php基础传输数据应用/简单的留言版/简单的注册账户/简单的登录页/

      前  言  PHP     通过上一篇博客,注册账号与登录页面--前后台数据交互  跳转转到index主页,接下来进入主页留言板功能,通过ajax向后台传输数据,同时发表留言. 具体的内容分析如下 ...

  7. xml dom minidom

    一. xml相关术语: 1.Document(文档): 对应一个xml文件 2.Declaration(声明): <?xml version="1.0" encoding=& ...

  8. atoi、itoa,strcpy,strcmp,memcpy等实现

    原文:http://www.cnblogs.com/lpshou/archive/2012/06/05/2536799.html 1.memcpy.memmove.memset源码 link:http ...

  9. 08 Python基础数据结构

    目录: 1) 列表 2) 元组 3) 字符串 4) bytes 5) bytearray 6) 字典 7) 集合 8) 冻集合 """1. 列表特性2. 创建3. 增加4 ...

随机推荐

  1. Python 常见字符串常量和表达式

    常见字符串常量和表达式 操作 解释 s = '' 空字符串 s = "spam's" 双引号和单引号相同 S = 's\np\ta\x00m' 转义序列 s = "&qu ...

  2. django websocket

    1.dwebsocket 2.等框架都是错误的 3.  django/channels 才是正确姿势 555 4. pip install -U channels 完成后,您应该添加channels到 ...

  3. 用TSNE进行数据降维并展示聚类结果

    TSNE提供了一种有效的数据降维方式,让我们可以在2维或3维的空间中展示聚类结果. # -*- coding: utf-8 -*- from __future__ import unicode_lit ...

  4. Debian系统 + XFCE桌面初识,基础环境搭建

    有幸分享个人的Linux下的习惯配置,具体操作可能阐述得比较粗糙. 在图形化界面进行配置操作,十分简便舒心. Linux发行版:Debian9.5(Stretch) 桌面Sesion:XFCE4 一. ...

  5. Java——string类型与date类型之间的转化

    String类型转化为Date类型 方法一 Date date=new Date("2019-01-25"); 方法二 String =(new SimpleDateFormat( ...

  6. oracle追加表空间

    ----查询表空间使用情况--- SELECT UPPER(F.TABLESPACE_NAME) "表空间名", D.TOT_GROOTTE_MB "表空间大小(M)&q ...

  7. paddlepaddle

    1. 训练过程中cost出现nan 可能是因为有脏数据,寻找脏数据的方法就是,设置batch_size=1, paddle.reader.shuffle 中buf_size=1 一条一条的进行训练,看 ...

  8. The listener supports no services

    问题描述 sql> lsnrctl start 提示: The listener supports no services The command completed successfully ...

  9. git 入门教程

    git 入门教程之协同开发 前面我们已经介绍过远程仓库的相关概念,不过那时并没有深入探讨,只是讲解了如何创建远程仓库以及推送最新工作成果到远程仓库,实际上远程仓库对于团队协同开发很重要,不仅仅是团队协 ...

  10. spring 动态代理

    突然想到AOP,就简单回忆一下动态代理.1.什么是动态代理? 假如有个用户有增删该查4个方法,如果要对用户操作后进行日志记录,可能会有人说直接在增删改查后做日志记录就行. 一旦我想在用户操作之前加一个 ...