字符串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. 使用axios获取本地json数据

    1. 通过搜索 网上说不放在static文件夹中会报错  但是一直报错  放到根目录下的时候不报错了 2. 在main.js中引入axios import axios from 'axios' 3. ...

  2. nginx和resin一二三

    最近听我们这边的开发讲解了一小下nginx和resin,现在Mark一下,可能不专业,但是对于我来说通俗易懂就好哈哈哈. 首先说服务器,服务器这个东西吧它是干啥的呢,你写的页面只能在你自己的电脑上打开 ...

  3. js中 setTimeout延时0毫秒的作用

    经常看到setTimeout延时0ms的javascript代码,感到很迷惑,难道延时0ms和不延时不是一个道理吗?后来通过查资料以及实验得出以下两个作用,可能还有作用我还不知道,希望得知的朋友在后面 ...

  4. Sql 查询当天、本周、本月记录、上周、上月记录

    查询当天: select * from info where DateDiff(dd,datetime,getdate())=0 查询24小时内: select * from info where D ...

  5. SQL练习题-50道SQL练习题及答案与详细分析

    网上流传较广的50道SQL训练,奋斗了不知道多久终于写完了.前18道题的难度依次递增,从19题开始的后半部分算是循环练习和额外function的附加练习,难度恢复到普通状态.第9题非常难,我反正没有写 ...

  6. leetcode 687.Longest Univalue Path

    寻找最长的路径,那么会在左边或者右边或者是从左到跟然后再到右方的路径的. /** * Definition for a binary tree node. * struct TreeNode { * ...

  7. 蓝桥每周一题之1. 3n+1 问题

    [问题描述] 考虑如下的序列生成算法:从整数 n 开始,如果 n 是偶数,把它除以 2:如果 n 是奇数,把它乘 3 加1.用新得到的值重复上述步骤,直到 n = 1 时停止.例如,n = 22 时该 ...

  8. excle中表引用

  9. uWSGI+Django+nginx(下)

    在上篇文章 说的uWSGI和Django都已没问题的情况下 找到 nginx的配置文件 我的是:/etc/nginx/nginx.conf 修改这个文件 在http{}里加入 下面的 server { ...

  10. python的xml模块用法

    xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单,不过,古时候,在json还没诞生的黑暗年代,大家只能选择用xml呀,至今很多传统公司如金融行业的很多系统的 ...