Python第三章-字符串
第三章 字符串
3.1 基本字符串操作
Python的字符串和元组差不多,是不可以进行改变的,如果想改变值,可以尝试list序列化之后在进行修改。
{
website = 'http://www.Python.org';
website = [-3:] = 'com';
上面操作违法。
}
3.2 字符串格式化:精简版
字符串格式化使用字符串格式化操作符(这个名字还是很恰当的)即%来实现。
基本用法例子
1.
>>> format = "Hello, %s. %s enough for ya?";
>>> values = ('world' ,'Hot');
>>> print (format % values);
Hello, world. Hot enough for ya?
2.
>>> format = "Pi with three decimals: %.3f";
>>> from math import pi
>>> print(format % pi)
Pi with three decimals: 3.142
3.模板字符串
<基本用法>
>>> from string import Template;
>>> s = Template('$x. glorious $x!');
>>> s.substitute(x='slurm')
'slurm. glorious slurm!'
<模板字符串如果和别的单词一起,那么要{x}区分>
>>> s = Template("It's ${x}tastic!")
>>> s.substitute(x='slurm')
"It's slurmtastic!"
>>>
<显示美元字符用两个$>
>>> s=Template("Make $$ selling $x!");
>>> s.substitute(x='slurm')
'Make $ selling slurm!'
<除了关键字参数之外,还可以使用字典变量提供值/名称对>
>>> s = Template('A $thing must never $action.');
>>> d = {}
>>> d['thing'] = 'gentleman'
>>> d['action'] = 'show his socks'
>>> s.substitute(d)
'A gentleman must never show his socks.'
<safe_substitute 在查找不到的时候不会报错>
>>> s = Template('A $x');
>>> s.substitute(a='x') 这个会报错,因为查找不到
>>> s.safe_substitute(a='x') 不会报错,并且输出下面值
'A $x'
3.3 字符串格式化:完整版
格式化操作符的右操作数可以是任何东西,如果是元组或者映射类型(如字典)那么字符串格式化讲会有所不同。
注意:
如果转换表达式一部分是元组,那么必须将它用括号括起来,以避免出错。
{
Ok
>>> '%s plus %s equals %s' % (1 ,1 ,2)
'1 plus 1 equals 2'
Error
>>> '%s plus %s equals %s' % 1,1,2
Traceback (most recent call last):
File "<pyshell#27>", line 1, in <module>'%s plus %s equals %s' % 1,1,2
TypeError: not enough arguments for format string
>>>
}
基本转换说明符-(以下描述循序至关重要(就是使用顺序))
(1)%字符:标记转换说明符的开始。
(2)转换标志(可选): -表示左对齐;
+表示在转换值之前要加上正负号
“” 正数之前保留空格
0 0填充
(3) 最小字段宽度(可选):转换后的字符串至少应该具有该指定值的宽度。
如果是*,则宽度会从值元组中读取。
(4)点(.) 后跟随精度值(可选):如果转换的是实数,精度值就表示出现在小数点后的位数。如果转换的是字符串,那么该数字就表示最大字段宽度。如果是*,那么精度将会从元组中读出。
(5)转换类型
d,i 带符号的十进制整数
o 不带符号的八进制
u 不带符号的十进制
x,X 十六进制
e,E 科学计数法
f,F 十进制浮点型
g,G
C 单字符
r 字符串(使用repr转换任意Python对象)
s 字符串(使用str转换任意Ptthon对象)
3.3.1简单转换
>>> 'Price of eggs: $%d' %42
'Price of eggs: $42'
>>> 'Price of eggs: $%d' %42
'Price of eggs: $42'
>>> 'Hexadecimal price of eggs:%x' %42
'Hexadecimal price of eggs:2a'
>>> from math import pi
>>> 'Pi: %f...' %pi
'Pi: 3.141593...'
>>> 'Very inexact estimate of pi: %i' %pi
'Very inexact estimate of pi: 3'
>>> 'Using str: %s' % 42L
SyntaxError: invalid syntax (我用的3.5 高版本里买没有显示L了)
>>> 'Using str: %s' % 42
'Using str: 42'
>>> 'Using repr: %r' %42
'Using repr: 42'
>>>
3.3.2 字段宽度和精度
>>> '%10f' %pi'
3.141593'
>>> '%10.2f' %pi
' 3.14'
>>> '%.2f' %pi
'3.14'
>>> '%.2s' %pi
'3.'
>>> '%.5s' % 'Guido van Rossum'
'Guido'
<长度可以用*代替,然后在元组里给出>
>>> '%.*s' %(5,'Guido van Rossum')
'Guido'
3.3.3 符号,对齐和0填充
<0填充>
>>> '%010.2f' %pi
'0000003.14'
<左对齐>
>>> '%-10.2f' %pi
'3.14 '
<空格填充>
>>> print(('% 5d' %10) + '\n' + ('% 5d' % -10))
10
-10
<正负号>
>>> print(('%+5d' %10) + '\n' + ('%+5d' % -10))
+10
-10
3.4 字符串方法
字符串常量
{
string.digits 0~9
string.letters 所有字母 大小写
string.lowercase 所有小写字母
string.printable 所有课打印的字符的字符串
string.punctuation 包含所有标点的字符串
string.uppercase 所有大写字母的字符串
}
字符串常量(例如string.letters)与地区有区别,其本身取决于Python所配置的语言,如果可以确定自己使用的是ASCII那么就可以例如这样 string.ascii_letters
3.4.1 find (找到输出最左边,找不到输出-1)
>>> mark = "123456789123456789"
>>> mark.find("123456")
0
>>> mark.find("aasd")
-1
可接受区间定义 [)
{
>>> subject = "$$$ Get rich now!!! $$$"
>>> subject.find("$$$")
0
>>> subject.find("$$$" ,1)
20
>>> subject.find("!!!" ,0 ,16)
-1
}
3.4.2 join 非常重要的字符串方法,它是split方法的逆方法,用来在队列中添加元素
{
>>> seq = [1,2,3,4,5]
>>> sep = '+'
>>> sep.join(seq)
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
sep.join(seq)
TypeError: sequence item 0: expected str instance, int found
>>> seq = ['1' ,'2' ,'3' ,'4' ,'5']
>>> sep.join(seq)
'1+2+3+4+5'
>>> sep
'+'
>>> seq
['1', '2', '3', '4', '5']
>>> dirs = '','usr','bin','env'
>>> '/'.join(dirs)
'/usr/bin/env'
>>> print ('C:' + '\\'.join(dirs))
C:\usr\bin\env
>>>
}
3.4.3 lower (title 所有首字母大写,其他小写)
lower方法返回字符串的小写字母版
{
>>> 'asdaADdasdwDsdw'.lower()
'asdaaddasdwdsdw'
>>> name = 'Gumby'
>>> names = ['gumby' ,'smith' ,'jones']
>>> if name.lower() in names : print ('Fount it!')
Fount it!
>>>
}
3.4.4 replace替换
{
>>> "This is a test".replace('is','eez')
'Theez eez a test'
}
3.4.5 split(jion的逆方法,用来将字符串分割成序列)。
{
>>> '1+2+3+4+5+6'.split('+')
['1', '2', '3', '4', '5', '6']
>>> '/use/dasd/w/ad/we'.split('/')
['', 'use', 'dasd', 'w', 'ad', 'we']
<如果不提供分割符,会把所有空格作为分隔符>
>>> "using the default ".split()
['using', 'the', 'default']
}
3.4.6 strip 去除字符串两边的空格(也可以指定去除字符)
{
>>> ' asdasd '.strip()
'asdasd'
>>> '000asd000asd00012'.strip('012')
'asd000asd'
}
3.4.7 translate 这3.5已经取消了,这个先不看了。
Python第三章-字符串的更多相关文章
- python 第三章 字符串-例1
1.字段宽度和精度 >>>'%.*s' % (10,'Gruido') ' Guido' >>>'%.-*s' % (10,'Gruido') 'Guido ...
- 简学Python第三章__函数式编程、递归、内置函数
#cnblogs_post_body h2 { background: linear-gradient(to bottom, #18c0ff 0%,#0c7eff 100%); color: #fff ...
- Python第三章(北理国家精品课 嵩天等)
一.数字类型及其操作 整数:pow(x,y),想算多大,就算多大:以0b或0B开头表示二进制:以0o或0O开头表示八进制:以0x或0X开头表示十六进制. 浮点数:取值范围-10^308至10^308, ...
- <<C++ Primer>> 第三章 字符串, 向量和数组 术语表
术语表 第 3 章 字符串, 向量和数组 begin: 是 string 和 vector 的成员,返回指向第一个元素的迭代器.也是一个标准库函数,输入一个数字,返回指向该数字首元素的指针. 缓 ...
- python第三章:循环语句--小白博客
Python条件语句 Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. 可以通过下图来简单了解条件语句的执行过程: Python程序语言指定任何非0和非 ...
- 2 python第三章文件操作
1.三元运算 三元运算又称三目运算,是对简单的条件语句的简写,如: 简单条件语句: if 条件成立: val = 1 else: val = 2 改成三元运算: val = 1 if 条件成立 els ...
- Python第三章-输入输出和运算符
输入输出和运算符 一.输入和输出 1.1 输出 `print()`函数用来向终端输出数据(其实也可以向文件输出数据,后面再讲) 可以传递多个参数,则输出的时候 python 会把多个参数的值用空格隔开 ...
- python基础三之字符串
Python的数据类型 数字(int),如1,2,3,用于计算. 字符串(str),如s = 'zxc',储存少量数据,进行操作. 布尔值(bool),True和False,用于进行判断. 列表(li ...
- python第三章:函数
在前面章节中,介绍了一些input(),print(),len()等内建函数,还有random,math等标准库相关函数,这些都是可以直接使用的,但是很多时候,我们也是可以编写自己的函数. 看个例子: ...
随机推荐
- Python3+pygame中国象棋 代码完整 非常好 有效果演示
这几天看到抖音上有个妹子下象棋超级猛,我的中国象棋也差不到哪去啊,走 做一个.... 一.运行效果 二.代码 下面的代码用到图片素材(images文件夹),下载地址如下:https://www.itp ...
- Springboot 轻量替代框架 Solon 1.3.10 发布
Solon 是一个微型的Java开发框架.项目从2018年启动以来,参考过大量前人作品:历时两年,4000多次的commit:内核保持0.1m的身材,超高的跑分,良好的使用体验.支持:RPC.REST ...
- mysql数据库的数据备份,以及开启日志
导出数据: location代表需要保存的数据文件的位置,默认保存在 C:\ProgramData\MySQL\MySQL Server 5.7\Data(Windows10系统位置,其他系统位置自行 ...
- java中的String,StringBuffer与StringBuilder
String类是不可变类,即一旦一个String对象被创建以后,包含在这个对象中的字符序列是不可改变的,直至这个对象被销毁. StringBuffer对象则代表一个字符序列可变的字符串,当一个Stri ...
- 攻防世界 reverse 新手练习区
1.re1 DUTCTF IDA shift+F12 查看字符串 DUTCTF{We1c0met0DUTCTF} 2.game ZSCTF zsctf{T9is_tOpic_1s_v5ry_int7r ...
- 在SSM框架中如何将图片上传到数据库中
今天我们来看看SSM中如何将图片转换成二进制,最后传入到自己的数据库中,好了,废话不多说,我们开始今天的学习,我这里用的编辑器是IDEA 1.导入图片上传需要的jar依赖包 1 <depende ...
- springboot集成swagger实战(基础版)
1. 前言说明 本文主要介绍springboot整合swagger的全过程,从开始的swagger到Knife4j的进阶之路:Knife4j是swagger-bootstarp-ui的升级版,包括一些 ...
- 软件漏洞--Hello-Shellcode
软件漏洞--Hello-Shellcode 使用上一次的栈溢出的漏洞软件 可以直接通过栈溢出来修改返回值,或者要跳转的函数地址 实现一个ShellCode来跳转自己的代码 源bug软件代码 #defi ...
- 创建数据库 UTF-8
CREATE DATABASE db_name DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
- Hadoop学习笔记—HDFS
目录 搭建安装 三个核心组件 安装 配置环境变量 配置各上述三组件守护进程的相关属性 启停 监控和性能 Hadoop Rack Awareness yarn的NodeManagers监控 命令 hdf ...