python string模块template_Python标准库笔记(1) — string模块

String模块包含大量实用常量和类,以及一些过时的遗留功能,并还可用作字符串操作。

1. 常用方法

常用方法描述str.capitalize()把字符串的首字母大写str.center(width)将原字符串用空格填充成一个长度为width的字符串,原字符串内容居中str.count(s)返回字符串s在str中出现的次数str.decode(encoding=’UTF-8’,errors=’strict’)以指定编码格式解码字符串str.encode(encoding=’UTF-8’,errors=’strict’)以指定编码格式编码字符串str.endswith(s)判断字符串str是否以字符串s结尾str.find(s)返回字符串s在字符串str中的位置索引,没有则返回-1str.index(s)和find()方法一样,但是如果s不存在于str中则会抛出异常str.isalnum()如果str至少有一个字符并且都是字母或数字则返回True,否则返回Falsestr.isalpha()如果str至少有一个字符并且都是字母则返回True,否则返回Falsestr.isdigit()如果str只包含数字则返回 True 否则返回 Falsestr.islower()如果str存在区分大小写的字符,并且都是小写则返回True 否则返回Falsestr.isspace()如果str中只包含空格,则返回 True,否则返回 Falsestr.istitle()如果str是标题化的(单词首字母大写)则返回True,否则返回Falsestr.isupper()如果str存在区分大小写的字符,并且都是大写则返回True 否则返回Falsestr.ljust(width)返回一个原字符串左对齐的并使用空格填充至长度width的新字符串str.lower()转换str中所有大写字符为小写str.lstrip()去掉str左边的不可见字符str.partition(s)用s将str切分成三个值str.replace(a, b)将字符串str中的a替换成bstr.rfind(s)类似于 find()函数,不过是从右边开始查找str.rindex(s)类似于 index(),不过是从右边开始str.rjust(width)返回一个原字符串右对齐的并使用空格填充至长度width的新字符串str.rpartition(s)类似于 partition()函数,不过是从右边开始查找str.rstrip()去掉str右边的不可见字符str.split(s)以s为分隔符切片strstr.splitlines()按照行分隔,返回一个包含各行作为元素的列表str.startswith(s)检查字符串str是否是以s开头,是则返回True,否则返回Falsestr.strip()等于同时执行rstrip()和lstrip()str.title()返回”标题化”的str,所有单词都是以大写开始,其余字母均为小写str.upper()返回str所有字符为大写的字符串str.zfill(width)返回长度为 width 的字符串,原字符串str右对齐,前面填充0

2.字符串常量

常数含义string.ascii_lowercase小写字母’abcdefghijklmnopqrstuvwxyz’string.ascii_uppercase大写的字母’ABCDEFGHIJKLMNOPQRSTUVWXYZ’string.ascii_lettersascii_lowercase和ascii_uppercase常量的连接串string.digits数字0到9的字符串:’0123456789’string.hexdigits字符串’0123456789abcdefABCDEF’string.letters字符串’abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ’string.lowercase小写字母的字符串’abcdefghijklmnopqrstuvwxyz’string.octdigits字符串’01234567’string.punctuation所有标点字符string.printable可打印的字符的字符串。包含数字、字母、标点符号和空格string.uppercase大学字母的字符串’ABCDEFGHIJKLMNOPQRSTUVWXYZ’string.whitespace空白字符 ‘\t\n\x0b\x0c\r ‘

3.字符串模板Template

通过string.Template可以为Python定制字符串的替换标准,下面是具体列子:

>>>from string import Template

>>>s = Template('$who like $what')

>>>print s.substitute(who='i', what='python')

i like python

>>>print s.safe_substitute(who='i') # 缺少key时不会抛错

i like $what

>>>Template('${who}LikePython').substitute(who='I') # 在字符串内时使用{}

'ILikePython'

Template还有更加高级的用法,可以通过继承string.Template, 重写变量delimiter(定界符)和idpattern(替换格式), 定制不同形式的模板。

import string

template_text = ''' Delimiter : $de Replaced : %with_underscore Ingored : %notunderscored '''

d = {'de': 'not replaced',

'with_underscore': 'replaced',

'notunderscored': 'not replaced'}

class MyTemplate(string.Template):

# 重写模板 定界符(delimiter)为"%", 替换模式(idpattern)必须包含下划线(_)

delimiter = '%'

idpattern = '[a-z]+_[a-z]+'

print string.Template(template_text).safe_substitute(d)  # 采用原来的Template渲染

print MyTemplate(template_text).safe_substitute(d)  # 使用重写后的MyTemplate渲染

输出:

Delimiter : not replaced

Replaced : %with_underscore

Ingored : %notunderscored

Delimiter : $de

Replaced : replaced

Ingored : %notunderscored

原生的Template只会渲染界定符为$的情况,重写后的MyTemplate会渲染界定符为%且替换格式带有下划线的情况。

4.常用字符串技巧

1.反转字符串

>>> s = '1234567890'

>>> print s[::-1]

0987654321

2.关于字符串链接

尽量使用join()链接字符串,因为’+’号连接n个字符串需要申请n-1次内存,使用join()需要申请1次内存。

3.固定长度分割字符串

>>> import re

>>> s = '1234567890'

>>> re.findall(r'.{1,3}', s)  # 已三个长度分割字符串

['123', '456', '789', '0']

4.使用()括号生成字符串

sql = ('SELECT count() FROM table '

'WHERE id = "10" '

'GROUP BY sex')

print sql

SELECT count() FROM table WHERE id = "10" GROUP BY sex

5.将print的字符串写到文件

>>> print >> open("somefile.txt", "w+"), "Hello World"  # Hello World将写入文件somefile.txt

转载于:https://my.oschina.net/jhao104/blog/829775

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/349343.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

注意力机制可视化_目标跟踪中的(STAM)时空注意力机制

目标跟踪分为单目标跟踪和多目标跟踪,单目标跟踪较为简单,这里我们只讨论多目标跟踪。多目标跟踪的遮挡问题多目标跟踪时特别容易发生目标间的相互遮挡,从而导致严重的预测偏移问题,如下图所示:红色框的行人在和蓝色框…

byteman_使用Byteman和JUnit进行故障注入

byteman我们的应用程序独立存在的时间已经很久了。 如今,应用程序是一种非常复杂的野兽,它们使用无数的API和协议相互通信,将数据存储在传统或NoSQL数据库中,通过网络发送消息和事件……例如,您多久考虑一次例如数据库…

java动态扩展_java栈内存动态扩展要怎么理解?要如何实现?

小伙伴们知道如何在java栈中内存动态扩展吗?这是虚拟机中的一个概念,下面让我们一起来看看该如何实现吧。一、内存概念在java中,我们一般会简单把java内存区域划为两种:堆内存与栈内存。其实这种划分是比较粗粒度的。其中栈内存就是指的是虚…

python 爬虫热搜_Python网络爬虫之爬取微博热搜

微博热搜的爬取较为简单,我只是用了lxml和requests两个库1.分析网页的源代码:右键--查看网页源代码.从网页代码中可以获取到信息(1)热搜的名字都在的子节点里(2)热搜的排名都在的里(注意置顶微博是没有排名的!)(3)热搜的访问量都在的子节点里…

优盘复制进来为空_为何电脑上的文件夹一复制到U盘里就变成空文件夹了?

(格式化后的卡在恢复前千万不要往里面存东西,因为这样会覆盖你想恢复的内容,如果你不小心存东西了也不要放弃,只不过恢复的机率会变小),下面开始:::在百度里输入Easy recover 软件找到后下载安装到电脑上,然后将内存卡与电脑连接,打开Easy recover 软件,首次打开时软件会分析系…

Spring Cloud教程–使用Spring Cloud Bus自动刷新配置更改

问题 在上一篇文章Spring Cloud Config Server简介 ( http://sivalabs.in/2017/08/spring-cloud-tutorials-introduction-to-spring-cloud-config-server/ )中,我们已经了解了如何使用Spring Cloud配置服务器。 但是,问题是要重新…

js给标签添加属性和值_jquery节点属性

一.节点操作1.DOM内容节点操作:​ ①innerHTML属性:设置或获取文本的内容(普通文本和标签)。​ ②innerText属性:设置或获取文本的内容(普通文本),存在兼容性问题。2.jQuery内容节点…

sci translate好用吗_228个学科分类对应12000+本SCI和SSCI期刊,总有你要的那款!

最近有很多小伙伴询问选刊的问题,而且都是非常具体的学科方向,我们的小编虽然非常热心且礼貌的回答“近期安排”,但其实我们也感觉到鸭梨山大:根据WOS最新一期(2020/9/21)名单公布,WOS目前总共收录了12266本…

java 反射 属性顺序_java反射得到的方法数组的顺序

展开全部看了下你好像需要set和get方法,如果你知道属性的名字的话不需要遍历可以这样获取,这个是我以前的demo的一个32313133353236313431303231363533e58685e5aeb931333332633561片段:Class clazzClass.forName("com.demo.reflectdemo.Student&quo…

arrays.sort(._Arrays.sort与Arrays.parallelSort

arrays.sort(.我们都使用Arrays.sort对对象和原始数组进行排序。 此API在下面使用合并排序或Tim排序对内容进行排序,如下所示: public static void sort(Object[] a) {if (LegacyMergeSort.userRequested)legacyMergeSort(a);elseComparableTimSort.sor…

python冒泡排序函数_python冒泡排序-Python,冒泡排序

arr[7,4,3,67,34,1,8].defbubble_sort:最近在学习Python,下面是我的一些笔记冒泡排序实现思路: 使用双重for循环,内层变量为i, 外层为j,在内层循环中不断的比较相邻的两个值(i, i1)的大小,如果i1的值大于i的…

适用于Idea的面向现代TDD的Java 8 JUnit测试模板(带有Mockito和AssertJ)

使用类似BDD的语法,Java 8和Mockito-AssertJ二重奏为Idea调整JUnit测试类模板。 本文涵盖的主题似乎很简单。 但是,根据我的培训师经验,我知道(不幸的是)这不是常见的做法。 因此,我决定写这篇简短的博客文…

python编程的基本方法有哪些_Python编程中常用的基础知识有哪些?

今天小编要跟大家分享的文章是关于Python编程中常用的基础知识有哪些?正在从事Python相关工作的小伙伴们,来和小编一起看一看本篇文章,希望本篇文章能够对大家有所帮助。1、正则表达式替换目标: 将字符串 line 中的 overview.gif 替换成其他字符串>&…

java取网页源码_Java获取任意http网页源代码的方法

本文实例讲述了JAVA获取任意http网页源代码。分享给大家供大家参考,具体如下:JAVA获取任意http网页源代码可实现如下功能:1. 获取任意http网页的代码2. 获取任意http网页去掉HTML标签的代码Webpage类:/*** 网页操作相关类*/packag…

python数据结构算法优势_Python数据结构与算法(一)----- 算法效率

一.引入先来看一道题:如果abc1000, 且a2b2c^2(a,b,c为自然数),如何求出所有a,b,c可能的组合?(1) 枚举法import timestart_time time.time()for a in range(0,1001):for b in range(0,1001):for c in range(1,1001):if abc1000 and a**2b**2 …

Java编程字符逆序输出_用JAVA编写一程序:从键盘输入多个字符串到程序中,并将它们按逆序输出在屏幕上。...

展开全部代码如下:import java.util.Scanner;public class ScannerDemo{public static void main(String[] args) throws Exception{Scanner scannew Scanner(System.in);System.out.println("请输入内容:");String strscan.nextLine();char[]…

glassfish 4配置_自己构建GlassFish 4.0快照

glassfish 4配置这篇文章是关于自己发布GlassFish 4.0快照的,其中包括一些黑客。 我找到了GlassFish FullBuild的官方说明,然后决定自己构建服务器。 有时,您可能不想等待团队升级GlassFish构建文件。 在本条目中,我将Artifactory…

julia与python对比_有人说Julia比Python好,还给出了5个理由

选自medium作者:Emmett Boudreau机器之心编译参与:杜伟、张倩、肖清本文作者从速度、通用性、多重派发、适用于 ML 的程度和包管理器 5 个方面阐述了 Julia 语言相较于 Python 的优势所在。Julia 是一种多范式的函数式编程语言,用于机器学习和…

使用Flowable.generate()生成可感知背压的流– RxJava常见问题解答

RxJava缺少创建无限自然数流的工厂。 这样的流很有用&#xff0c;例如&#xff0c;当您想通过压缩两个事件的唯一序列号给可能的无限事件流时&#xff1a; Flowable<Long> naturalNumbers //???Flowable<Event> someInfiniteEventStream //... Flowable<P…

java字符串构造函数的应用_StringTokenizer类的使用

StringTokenizer是一个用来分隔String的应用类&#xff0c;相当于VB的split函数。1.构造函数public StringTokenizer(String str)public StringTokenizer(String str, String delim)public StringTokenizer(String str, String delim, boolean returnDelims)第一个参数就是要分…