《Python Cookbook(第2版)中文版》——1.12 控制大小写

简介:

本节书摘来自异步社区《Python Cookbook(第2版)中文版》一书中的第1章,第1.12节,作者[美]Alex Martelli , Anna Martelli Ravenscrof , David Ascher ,高铁军 译,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.12 控制大小写

任务

将一个字符串由大写转成小写,或者反其道而行之。

解决方案

这正是字符串对象提供upper和lower方法的原因。每个方法都不需要参数,直接返回一个字符串的拷贝,其中的每个字母都被改变成大写形式—或小写形式:

big = little.upper( )
little = big.lower( )

非字母的字符按照原样被复制。

s.capitalize和s[:1].upper()+s[1:].lower()相似:第一个字符被改成大写,其余字符被转成小写。s.title也很相似,不过它将每个单词的第一个字母大写(这里的单词可以是字母的序列),其余部分则转成小写:

>>> print 'one tWo thrEe'.capitalize( )
One two three
>>> print 'one tWo thrEe'.title( )
One Two Three

讨论

操作字符串大小写是很常见的需求,有很多方法可以让你创建需要的字符串。另外,还可以检查一个字符串是否已经是满足需求的形式,比如isupper、islower和istitle方法,如果给定的字符串不是空的,至少含有一个字母,而且分别满足全部大写、全部小写、每个单词开头大写的条件,这三种方法都会返回一个True,但是却没有类似的iscapitalized方法。不过如果我们需要一个行为方式类似于“is…”的方法,自己编写代码也很简单。如果给定的字符串是空的,那些方法都会返回False。如果给定的字符串非空,但是却不包含任何字母字符,也将全部返回False。

最清楚简单的iscapitalized,仅需简洁的一行:

def iscapitalized(s):
      return s == s.capitalize( )

不过,这偏离了“is…”方法们的行为模式,对于空字符串和不含字母的字符串,它也返回True。我们再给出一个严格点的版本:

import string
notrans = string.maketrans('', '') #identity''translation''
def containsAny(str, strset):
     return len(strset) != len(strset.translate(notrans, str))
def iscapitalized(s):
     return s == s.capitalize( ) and containsAny(s, string.letters)

这里,我们用了第1.8节中的函数来确保,当遇到了空字符串或不含字母的字符串,返回值是False。不过也正如第1.8节的提示一样,那意味着这个特别的iscapitalized只适用于普通字符串,对Unicode字符串不适用。

相关文章
|
Python
Python基础教程(第3版)中文版 第12章 图形用户界面 (笔记)
Python基础教程(第3版)中文版 第12章 图形用户界面 (笔记)
|
Python Windows
Python基础教程(第3版)中文版 第18章 程序打包 (笔记)
Python基础教程(第3版)中文版 第18章 程序打包 (笔记)
|
11月前
|
存储 Python
[oeasy]python038_ range函数_大小写字母的起止范围_start_stop
本文介绍了Python中`range`函数的使用方法及其在生成大小写字母序号范围时的应用。通过示例展示了如何利用`range`和`for`循环输出指定范围内的数字,重点讲解了小写和大写字母对应的ASCII码值范围,并解释了`range`函数的参数(start, stop)以及为何不包括stop值的原因。最后,文章留下了关于为何`range`不包含stop值的问题,留待下一次讨论。
179 3
|
SQL 安全 API
Python基础教程(第3版)中文版 第13章 数据库支持(笔记)
Python基础教程(第3版)中文版 第13章 数据库支持(笔记)
|
Python
Python基础教程(第3版)中文版 第20章 项目1: 自动添加标签(纯文本转HTML格式) (笔记2)
Python基础教程(第3版)中文版 第20章 项目1: 自动添加标签(纯文本转HTML格式) (笔记2)
|
Python
Python基础教程(第3版)中文版 第20章 项目1: 自动添加标签(纯文本转HTML格式) (笔记)
Python基础教程(第3版)中文版 第20章 项目1: 自动添加标签(纯文本转HTML格式) (笔记)
|
存储 设计模式 算法
Python基础教程(第3版)中文版 第19章 趣味编程 (笔记)
Python基础教程(第3版)中文版 第19章 趣味编程 (笔记)
|
Java C# C++
Python基础教程(第3版)中文版 第17章 扩展python (笔记)
Python基础教程(第3版)中文版 第17章 扩展python (笔记)
|
移动开发 测试技术 C语言
Python基础教程(第3版)中文版 第16章 测试基础(笔记)
Python基础教程(第3版)中文版 第16章 测试基础(笔记)
|
XML 数据格式 Python
Python基础教程(第3版)中文版 第15章 python和web(笔记)
Python基础教程(第3版)中文版 第15章 python和web(笔记)

热门文章

最新文章

推荐镜像

更多