字符串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 = 0for c in s:if c in 'aeiou':count += 1return countprint 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 Falselow += 1high -= 1return 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 Trueelse:if name[0] != name[-1]:return Falseelse: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)
+直接比较对应数字的大小

字典序 Dictionary order

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

编写函数 is_ascending,判断一个人名的字母是否为升序排列(允许重复字母)

f = open('names.txt','r')def is_ascending(name):p = name[0]for c in name:if p > c:return Falsep = creturn True       for line in f:line = line.strip()if is_ascending(line):print linef.close ()

字符串格式化 Formatting

+输出更规格的结果
format方法,如:

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

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

正则表达式 Regular Expressions

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

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

note 8 字符串相关推荐

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

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

  2. Swift 4官方文档中文版 The Basic(上)

    Swift学习交流群: 313838956 本群由Guards翻译组创建并维护, 志于给认真想学习Swift的同学打造一个良好的交流圈子. 该文章翻译自Apple官方文档: The Swift 4 P ...

  3. C 语言编程 — 编程实践

    目录 文章目录 目录 前文列表 程序示例 前文列表 <程序编译流程与 GCC 编译器> <C 语言编程 - 基本语法> <C 语言编程 - 基本数据类型> < ...

  4. LeetCode Longest Palindromic Substring

    原题链接在这里:https://leetcode.com/problems/longest-palindromic-substring/ 题目: Given a string s, find the ...

  5. CSDN编程挑战(交换字符)

    如果字符串str3能够由str1和str2中的字符按顺序交替形成,那么称str3为str1和str2的交替字符串.例如str1="abc",str2="def" ...

  6. 如何在Android实现录屏直播

    许多开发者在做智慧教室同屏亦或会议同屏时,基于Andriod平台采集屏幕并编码推送,往往遇到各种各样的问题,以下就我们开发过程中的一些技术考量做个分享,权当抛砖引玉: 协议选择.数据来源和处理 1. ...

  7. Android平台屏幕/摄像头或外部数据采集及RTMP推送接口设计描述

    好多开发者提到,为什么大牛直播SDK的Android平台RTMP推送接口怎么这么多?不像一些开源或者商业RTMP推送一样,就几个接口,简单明了. 不解释,以Android平台RTMP推送模块常用接口, ...

  8. Tcl学习之--表达式

    l 数值操作数 表达式的操作数一般是整数或实数.整数可能是十进制.二进制,八进制或十六进制. 比方以下同一个整数 335               --> 十进制 0o517         ...

  9. 函数拾取-python

    为什么80%的码农都做不了架构师?>>>    def getStrCodeType(strIn):'''@note: 判断字符串编码格式@param strIn : 输入字符串@t ...

  10. 【STM32】CubeMX+HAL库之 硬件IIC+DMA控制OLED(兼容SSD1306SH1106驱动)

    [STM32]CubeMX+HAL库之 硬件IIC+DMA控制1.3寸OLED 前言 目前网上大多数驱动OLED屏都采用软件IIC,因为HAL库的升级使得硬件IIC的稳定性得到了保障,所以想采用硬件I ...

最新文章

  1. ViewBag、ViewData和TempData使用方法、区别与联系
  2. 实验室电子设备选型-2020-年末
  3. 新纳米结构能加快电子设备运行
  4. Android 用MediaRecorder录制视频太短崩的问题
  5. netflix测试能不能看_Netflix监管者测试–引入知事,准官员
  6. c#中高效的excel导入oracle的方法(转)
  7. java reactor模式例子_JAVA BIO,NIO,Reactor模式总结
  8. 使用python解决算法和数据结构--使用栈实现进制转换
  9. 安装 | MATLAB2018a (64位) 安装教程及安装包下载链接
  10. Burp Suite CA证书下载及导入教程
  11. 问题:TypeError: denoise_wavelet() got an unexpected keyword argument ‘method‘
  12. 手机总是耗电太快,怎么办?
  13. 手把手调参最新 YOLOv7 模型 训练部分 - 最新版本(二)
  14. 工具说明书 - Beoplay E8耳机操作及电池更换
  15. 扫描普通二维码,进入微信小程序
  16. hp暗夜精灵2Pro(HP OMEN 15-ax219TX 暗影精灵 II 代Pro游戏本)驱动列表
  17. 使用POI导出数据和图片,
  18. 大数据和云计算技术周报(第81期)
  19. RE模块:Python编译正则的模块
  20. [java]switch....case小练习:输入小写的char类型,并将之转为大写

热门文章

  1. 腾讯 2015年校招 笔试 附加题
  2. C语言之打印错误信息
  3. 35岁还一事无成就算失败吗?大佬实力演绎不向生活低头
  4. 吐槽大会 之博客园两个月使用体验
  5. 做职场里的“超级英雄”,需要怎样的盔甲与工具?
  6. 计算机无法进bios,del和F2进不了bios,详细教您电脑进不了bios怎么办
  7. java lazy_在Java8中模拟Lazy
  8. 中国语言地图集 c1-12,中国语言地图集介绍——网上收集整理
  9. Nginx 关于 Rewrite 执行顺序详解
  10. linux安装android x86_64,在VirtualBox上安装Android-X86