博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
note 8 字符串
阅读量:7043 次
发布时间:2019-06-28

本文共 2937 字,大约阅读时间需要 9 分钟。

字符串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

1276762-20190426171949570-229712549.png

for 语句

枚举字符串的每个字符

1276762-20190426172231739-1963857572.png

计算一个字符串中元音字母的个数

def vowles_count(s):    count = 0    for c in s:        if c in 'aeiou':            count += 1        return countprint vowles_count('Hello world')

字符串索引 index

+字符串中每个字符都已一个索引值,也叫下标

+索引从0(前向)或-1(后向)开始

[ ]

1276762-20190428005433356-111862345.png

切片 Slicing

+选择字符串的子序列

语法 [start : finish]

start: 子序列开始位置的索引值finish: 子序列结束位置的下一个字符的索引值

1276762-20190426181407037-1811321947.png

如果不提供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

+一旦生成,则内容不能改变

1276762-20190426182208301-2078237807.png

+通过切片等操作,生成一个新的字符串

1276762-20190426182357856-1474364268.png

字符串方法 Methods

+方法

+对象提供的函数
1276762-20190426182506704-630978735.png

+注意

+replace 方法返回一个新的字符串,原字符串内容不变
+新字符串重新赋值给原来的变量

更多字符串方法

find

1276762-20190426182805190-1108136871.png

split

1276762-20190426182824675-1297143526.png

其他方法

dir(str)
...

人名游戏

人名列表文件names.txt,将每个人名转换为首字母大写,其他字母小写的格式
1276762-20190426193809463-352936972.png

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 linef.close ()

字符串比较

+任何一个字符都对应一个数字

ASCII (American Standard Code for Information Interchange)
+直接比较对应数字的大小
1276762-20190426202717320-110368924.png

字典序 Dictionary order

+首先比较两个字符串的第一个字符

+如果相同,则比较下一个字符
+如果不同,则字符串的大小关系由这两个字符的关系决定
+如果其中一个字符为空(较短),则其更小

1276762-20190426202945526-599295120.png

编写函数 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 linef.close ()

字符串格式化 Formatting

+输出更规格的结果

format方法,如:
1276762-20190426205827080-1402931989.png

+括号的格式

{field name:align width.precision type}
域名:对齐方式 整数-占用宽度.精度 类型

对齐方式:> 向右对齐,< 向左对齐

1276762-20190426214627299-1428807643.png

正则表达式 Regular Expressions

+判断一个人名(name)是否满足下列模式

1276762-20190426215123696-1062420681.png

c?a ?表示任意一个字符

c?a *表示任意多个字符

+正则表达式 用来描述字符串的模式

.表示任意字符
\d+ 表示一系列数字
[a-z]表示一个小写字母
....

判断一个人名是否含有C.A模式

import ref = 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()

正则表达式非常强大

转载于:https://www.cnblogs.com/OceanF/p/10777023.html

你可能感兴趣的文章
《敏捷时代》作者访谈录
查看>>
Scrum Guides 2017年最新修改
查看>>
Cling旨在提供一款高性能的C++ REPL
查看>>
关于《在Windows与.NET平台上的持续交付实践》的问答录
查看>>
TensorFlow模型的签名推荐与快速上线\n
查看>>
改变的六条规则
查看>>
GitHub是如何改进自身的DNS架构的
查看>>
IntelliJ IDEA 2018.3 新版本发布,支持 Java 12及Spring Boot增强等特性
查看>>
阿里重磅发布大规模图神经网络平台AliGraph,架构算法解读
查看>>
AWS Amplify Console:赋予应用程序快速部署的能力
查看>>
Git漏洞导致攻击者可在用户电脑上运行任意代码
查看>>
书评 —— 《Go语言编程》
查看>>
红帽收购混合云管理提供商NooBaa,混合云爆发节点临近!
查看>>
保持分布式团队同步
查看>>
QCon上海2015盛大开幕
查看>>
Jakarta EE:云原生Java的新平台
查看>>
2018 Node.js用户调查报告显示社区仍然在快速成长
查看>>
WhiteSource推出免费开源的漏洞检查工具
查看>>
聊天机器人已死,为什么腾讯还要打造自己的智能客服?
查看>>
如何打造一流的查询引擎,构建优秀的数据仓库?
查看>>