字符串是 Python 中最常用的数据类型。本节实验将会学习如何对 Python3 的字符串进行处理操作。

字符串的三种表示

可以通过几种不同的方式表示字符串。如单引号('...')或双引号("...")。下面的例子能帮助你更好的理解字符串。

  1. >>> s = "I am Chinese"
  2. >>> s
  3. 'I am Chinese'
  4. >>> s = 'I am Chinese'
  5. >>> s = "Here is a line \
  6. ... split in two lines"
  7. >>> s
  8. 'Here is a line split in two lines'
  9. >>> s = "Here is a line \n split in two lines"
  10. >>> s
  11. 'Here is a line \n split in two lines'
  12. >>> print(s)
  13. Here is a line
  14. split in two lines

\ 表示写到下一行。如果你想要分几行输入字符串,并且希望行尾的换行符自动包含到字符串当中,可以使用三对引号:"""...""" 或 '''...''' 。

  1. >>> print("""\
  2. ... Usage: thingy [OPTIONS]
  3. ... -h Display this usage message
  4. ... -H hostname Hostname to connect to
  5. ... """)
  6. Usage: thingy [OPTIONS]
  7. -h Display this usage message
  8. -H hostname Hostname to connect to

字符串的方法

每一个字符串对象都有几个可用的内建方法,我们已经使用过一些了,比如 s.split()

方法 title() 返回字符串的标题版本,即单词首字母大写其余字母小写。

  1. >>> s = "shi yan lou"
  2. >>> s.title()
  3. 'Shi Yan Lou'

方法 upper() 返回字符串全部大写的版本,反之 lower() 返回字符串的全部小写版本。

  1. >>> z = s.upper()
  2. >>> z
  3. 'SHI YAN LOU'
  4. >>> z.lower()
  5. 'shi yan lou'

方法 swapcase() 返回字符串大小写交换后的版本 。

  1. >>> s = "I am A pRoGraMMer"
  2. >> s.swapcase()
  3. 'i AM a PrOgRAmmER'

方法 isalnum() 检查所有字符是否只有字母和数字,下面的代码中第一行的字符串 s 中包含空格字符,所以返回 False

  1. >>> s = "jdwb 2323bjb"
  2. >>> s.isalnum()
  3. False
  4. >>> s = "jdwb2323bjb"
  5. >>> s.isalnum()
  6. True

方法 isalpha() 检查字符串之中是否只有字母。

  1. >>> s = "SankarshanSir"
  2. >>> s.isalpha()
  3. True
  4. >>> s = "Sankarshan Sir"
  5. >>> s.isalpha()
  6. False

还有一些其它检查字符串的方法:

  1. >>> s = ""
  2. >>> s.isdigit() # 检查字符串是否所有字符为数字
  3. True
  4. >>> s = "ShiYanLou is coming"
  5. >>> s.islower() # 检查字符串是否所有字符为小写
  6. False
  7. >>> s = "Shiyanlou Is Coming"
  8. >>> s.istitle() # To 检查字符串是否为标题样式
  9. True
  10. >>> s = "CHINA"
  11. >>> s.isupper() # 检查字符串是否所有字符为大写
  12. True

字符串的分割与连接

我们可以使用 split() 分割任意字符串,split() 允许有一个参数,用来指定字符串以什么字符分隔(默认为 " "),它返回一个包含所有分割后的字符串的列表。

  1. >>> s = "We all love Python"
  2. >>> s.split()
  3. ['We', 'all', 'love', 'Python']
  4. >>> x = "shiyanlou:is:waiting"
  5. >>> x.split(':')
  6. ['shiyanlou', 'is', 'waiting']

相反的,方法 join() 使用指定字符连接多个字符串,它需要一个包含字符串元素的列表作为输入然后连接列表内的字符串元素。

  1. >>> "-".join("GNU/Linux is great".split())
  2. 'GNU/Linux-is-great'

在上面的例子中,我们基于空格 " " 分割字符串 "GNU/Linux is great",然后用 "-" 连接它们。

字符串的剥离

字符串有几个进行剥离操作的方法。最简单的一个是 strip(chars),用来剥离字符串首尾中指定的字符,它允许有一个字符串参数,这个参数为剥离哪些字符提供依据。不指定参数则默认剥离掉首尾的空格和换行符,代码如下:

  1. >>> s = " a bc\n "
  2. >>> s.strip()
  3. 'a bc'

你可以使用 lstrip(chars) 或 rstrip(chars) 只对字符串左或右剥离。

  1. >>> s = "www.foss.in"
  2. >>> s.lstrip("cwsd.") #删除在字符串左边出现的'c','w','s','d','.'字符
  3. 'foss.in'
  4. >>> s.rstrip("cnwdi.") #删除在字符串右边出现的'c','n','w','d','i','.'字符
  5. 'www.foss'

文本搜索

字符串有一些方法能够帮助你搜索字符串里的文本或子字符串。下面给出示例:

  1. >>> s = "faulty for a reason"
  2. >>> s.find("for")
  3. 7
  4. >>> s.find("fora")
  5. -1
  6. >>> s.startswith("fa") # 检查字符串是否以 fa 开头
  7. True
  8. >>> s.endswith("reason") # 检查字符串是否以 reason 结尾
  9. True

find() 能帮助你找到第一个匹配的子字符串,没有找到则返回 -1。

两个实例

回文检查

回文(palindrome)是一种无论从左还是从右读都一样的字符序列。比如 “madam”。在这个例子中,我们检查用户输入的字符串是否是回文,并输出结果。

  1. #!/usr/bin/env python3
  2. s = input("Please enter a string: ")
  3. z = s[::-1] #把输入的字符串s 进行倒序处理形成新的字符串z
  4. if s == z:
  5. print("The string is a palindrome")
  6. else:
  7. print("The string is not a palindrome")

单词计数

在讲解单词计数之前我们先了解一个概念:格式化操作符(%)。

我们先看下面的这个例子:

  1. >>> print("my name is %s. I am %d years old" % ('Shixiaolou',4))
  2. my name is Shixiaolou. I am 4 years old

在这个例子中,%s 为第一个格式符,表示一个字符串;%d 为第二个格式符,表示一个整数。格式符为真实值预留位置,并控制显示的格式。常用的有:

%s 字符串(用 str() 函数进行字符串转换)

%r 字符串(用 repr() 函数进行字符串转换)

%d 十进制整数

%f 浮点数

%% 字符“%”

那么接下来我们对用户输入的一行文本进行单词计数。

  1. #!/usr/bin/env python3
  2. s = input("Enter a line: ")
  3. print("The number of words in the line are %d" % (len(s.split(" "))))

参考链接:https://www.shiyanlou.com/courses/596

Python3简明教程(七)—— 字符串的更多相关文章

  1. Python3 简明教程学习(上)

    一.开始 Python 之旅交互模式 1.Ctrl + D 输入一个 EOF 字符来退出解释器,也可以键入 exit() 来退出 2.#!/usr/bin/env python3 中#!称为 Sheb ...

  2. Python3 简明教程

    Python是由吉多·范罗苏姆(Guido Van Rossum)在90年代早期设计.它是如今最常用的编程 语言之一.它的语法简洁且优美,几乎就是可执行的伪代码. 注意:这篇教程是特别为Python3 ...

  3. Python3简明教程(六)—— 数据结构

    简单的来说,数据结构(data structure)是计算机中存储.组织数据的方式.比如我们之前使用过的列表就是一种数据结构,在这里我们还会深入学习它.之前也有简单的介绍. 列表 >>&g ...

  4. Python3简明教程(十四)—— Collections模块

    collections 是 Python 内建的一个集合模块,提供了许多有用的集合类. 在这个实验我们会学习 Collections 模块.这个模块实现了一些很好的数据结构,它们能帮助你解决各种实际问 ...

  5. Python3简明教程(十二)—— 模块

    在这节我们将要学习 Python 模块相关知识.包括模块的概念和导入方法,包的概念和使用,第三方模块的介绍,命令行参数的使用等. 模块 到目前为止,我们在 Python 解释器中写的所有代码都在我们退 ...

  6. Python3简明教程(十一)—— 类

    本节中将通过定义一些简单的 Python 类,来学习 Python 面向对象编程的基本概念. 定义类 在写你的第一个类之前,你应该知道它的语法.我们以下面这种方式定义类: class nameofth ...

  7. Python3简明教程(十)—— 异常

    在本节我们学习 Python 的异常以及如何在你的代码中处理它们. 异常 在程序执行过程中发生的任何错误都是异常.每个异常显示一些相关的错误信息,比如你在 Python3 中使用 Python2 独有 ...

  8. Python3简明教程(九)—— 文件处理

    文件是保存在计算机存储设备上的一些信息或数据.你已经知道了一些不同的文件类型,比如你的音乐文件,视频文件,文本文件.Linux 有一个思想是“一切皆文件”,这在实验最后的 lscpu 的实现中得到了体 ...

  9. Python3简明教程(五)—— 流程控制之循环

    有些时候我们需要多次执行相同的任务,我们使用一个计数器来检查代码需要执行的次数.这个技术被称为循环. while循环 while语句的语法如下: while condition: statement1 ...

随机推荐

  1. 浅谈getAttribute兼容性

    最近终于证实tag.setAttribute("style", "color:#000;");在IE7中不起作用.于是百度了一些解决办法. IE的setAttr ...

  2. 移动web开发------公用css----自己总结

    @charset "utf-8"; html, body { background: #fff; color: #505050; font-size: 10px; -moz-use ...

  3. 出现"Unable to instantiate Action,xxxxx, defined for 'login' in namespace '/' xxxxx 解决办法

    转自:https://blog.csdn.net/heroful/article/details/17261169 问题原因: 在MyEclipse 利用SSH框架写程序,运行时出现 " U ...

  4. vue微信公众号、H5微信支付

    1.H5微信支付 后台会返回一个URL,前端直接跳转就OK(需要你传给后台一个ip,必须保证在同一域名下) 使用window.location.href =res.data;进行页面跳转到支付界面(r ...

  5. 2.28 MapReduce在实际应用中常见的优化

    一.优化的点 Reduce Task Number Map Task输出压缩 Shuffle Phase 参数 map.reduce分配的虚拟CPU 二.Reduce Task Number Redu ...

  6. ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 23. 继续讲Tag Helpers 和复习View Component

    当条件为true就渲染,否则就不渲染 ‘ 判断用户的登陆 更好的一点是做一个TagHelper.把这些明显的C#代码都去掉.最终都是用html和属性的形式来组成一个最终的代码 属性名称等于Confit ...

  7. 任务17:从UML角度来理解依赖

    什么是依赖 如果我们用EF操作数据库. 那么CustomerController就对Context形成了依赖. 我们这种依赖的写法就是隐式的依赖 显式依赖于隐式依赖 怎么理解隐式的依赖呢? 三层架构是 ...

  8. 洛谷 - P1162 - 填涂颜色 - 简单搜索

    https://www.luogu.org/problemnew/show/P1162 在外面加一圈0把0连起来,然后把所有0换成2,再从(0,0)把连通的2全部改回来. 这也是一个判断内外圈的好办法 ...

  9. ZOJ1004 DFS基础

    这道题一看就觉得是DFS,但是,不对,还有栈,这就有点难办了. DFS+栈一波新姿势. 在DFS里面用栈的思想. DFS主要就是搜下去, 然后前一个状态标记,搜完以后,还是要保持前一个状态. 然后就把 ...

  10. hdoj1028;他们说这题叫dp...

    #include<cstdio> #include<string> #include<iostream> #include<vector> #inclu ...