Python3学习笔记06-字符串
可以使用引号('或")来创建字符串。
var1 = 'Hello World!'
var2 = "Runoob"
在最新的Python 3版本中,字符串是以Unicode编码的,也就是说,Python的字符串支持多语言,例如:
print('包含中文的str')
print('\u4e2d\u6587')#如果知道字符的整数编码,还可以用十六进制这么写str
如果要在网络上传输,或者保存到磁盘上,就需要把str变为以字节为单位的bytes
Python对bytes类型的数据用带b前缀的单引号或双引号表示
x = b'abc' print(x)
以Unicode表示的str通过encode()方法可以编码为指定的bytes
a = 'abc'.encode('ascii')
b = '中文'.encode('utf-8')
print('a = ',a,'b = ',b)#纯英文的str可以用ASCII编码为bytes,内容是一样的,含有中文的str可以用UTF-8编码为bytes
从网络或磁盘上读取了字节流,那么读到的数据就是bytes。要把bytes变为str,就需要用decode()方法:
c = b'abc'.decode('ascii')
d = b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')
print('c = ',c,'d = ',d)
b'\xe4\xb8\xad\xff'.decode('utf-8')#如果bytes中包含无法解码的字节,decode()方法会报错
e = b'\xe4\xb8\xad\xff'.decode('utf-8', errors='ignore')
print(e)
传入errors='ignore'忽视无法解码的字节
要计算str包含多少个字符,可以用len()函数
print(len('abc'))
print((len('中文')))
len()函数计算的是str的字符数,如果换成bytes,len()函数就计算字节数
print(len(b'abc'))
print(len(b'\xe4\xb8\xad\xe6\x96\x87'))
可见,1个中文字符经过UTF-8编码后通常会占用3个字节,而1个英文字符只占用1个字节
Python 访问子字符串,可以使用方括号来截取字符串,如下实例
str = 'Runoob'
print(str[0:-1]) # 输出第一个到倒数第二个的所有字符
print(str[0]) # 输出字符串第一个字符
print(str[2:5]) # 输出从第三个开始到第五个的字符
print(str[2:]) # 输出从第三个开始的后的所有字符
更新字符串
可以截取字符串的一部分并与其他字段拼接
a = var1[:6] + 'Runoob!'
print ("已更新字符串 : ", a)
转义字符
print("abc")#''或""本身只是一种表示方式,不是字符串的一部分
print("i""'m ok")#如果'本身也是一个字符,那就可以用""括起来
print('i\'m "ok"')#如果字符串内部既包含'又包含",可以用转义字符\来标识
#转义字符\可以转义很多字符
print('i \nm')#\n表示换行
print('a\tb')#\t表示制表符
print('a\\\n\\b')#字符\本身也要转义,所以\\表示的字符就是\
print(r'a\\\n\\b')#用r''表示''中的字符串不需要转义
字符串运算符
a = 'Hello'
b = 'python'
print(a+b)#字符串连接
print(a*2)#重复输出字符串
print(a[1])#通过索引获取字符串中字符
print(a[1:3])#截取字符串中的一部分
print('H'in a)#如果字符串中包含给定的字符返回 True
print('b' not in a )#如果字符串中不包含给定的字符返回 True
print(r'a\\\n\\b')#用r''表示''中的字符串不需要转义 r大小写都可以
字符串格式化
print('Hello %s'%'word')# %s表示用字符串替换
print('Hi,%s,you have %d'%('xu',100000))# %d表示用整数替换
#有几个%?占位符,后面就跟几个变量或者值,顺序要对应好。如果只有一个%?,括号可以省略
print('%f'%3.12)# %f表示用浮点数替换
print('%x'%0xaa3) # %x表示用十六进制整数替换
#其中,格式化整数和浮点数还可以指定是否补0和整数与小数的位数:
print('%5d-%03d' % (11,10))# %后是0 表示在整数的前面补0 之后到d的数字表示这个整数是多少位的
print('%.3f' % 3.1415926)#f前的数字表示留几位小数
# %s永远起作用,它会把任何数据类型转换为字符串
print('Age:%s Gender:%s'%(25,True))
#如果%是个普通字符,需要用%%来表示一个%
print('growth rate:%d%%'%7)
三引号
para_str = """这是一个多行字符串的实例
多行字符串可以使用制表符
TAB ( \t )。
也可以使用换行符 [ \n ]。
"""
print (para_str)
print(r'''hello,\n
world''')#多行字符串'''...'''还可以在前面加上r使用
字符串内建函数
capitalize()将字符串的第一个字符转换为大写
练习 通过切片去除字符串的空格
def trim(s):
n = len(s)
while 0 < n:
if s[:1] == ' ':
s = s[1:]
elif s[-1:] == ' ':
s = s[:-1]
n=n-1
return s
if trim('hello ') != 'hello':
print('测试失败!')
elif trim(' hello') != 'hello':
print('测试失败!')
elif trim(' hello ') != 'hello':
print('测试失败!')
elif trim(' hello world ') != 'hello world':
print('测试失败!')
elif trim('') != '':
print('测试失败!')
elif trim(' ') != '':
print('测试失败!')
else:
print('测试成功!')
Python3学习笔记06-字符串的更多相关文章
- python3学习笔记之字符串
字符串 1.一个个字符组成的有序的序列,是字符的集合: 2.使用单引号.双引号.三引号引住的字符序列 3.字符串是不可变对象 4.python3起,字符串就是Unicode类型: 字符串特殊举例: 不 ...
- python3学习笔记(7)_listComprehensions-列表生成式
#python3 学习笔记17/07/11 # !/usr/bin/env python3 # -*- conding:utf-8 -*- #通过列表生成式可以生成格式各样的list,这种list 一 ...
- python3学习笔记(6)_iteration
#python3 学习笔记17/07/10 # !/usr/bin/env python3 # -*- coding:utf-8 -*- #类似 其他语言的for循环,但是比for抽象程度更高 # f ...
- Python3学习笔记(urllib模块的使用)转http://www.cnblogs.com/Lands-ljk/p/5447127.html
Python3学习笔记(urllib模块的使用) 1.基本方法 urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, ...
- 1.C#基础学习笔记3---C#字符串(转义符和内存存储无关)
技术qq交流群:JavaDream:251572072 教程下载,在线交流:创梦IT社区:www.credream.com ------------------------------------- ...
- Python3学习笔记 - 准备环境
前言 最近乘着项目不忙想赶一波时髦学习一下Python3.由于正好学习了Docker,并深深迷上了Docker,所以必须趁热打铁的用它来创建我们的Python3的开发测试环境.Python3的中文教程 ...
- 机器学习实战(Machine Learning in Action)学习笔记————06.k-均值聚类算法(kMeans)学习笔记
机器学习实战(Machine Learning in Action)学习笔记————06.k-均值聚类算法(kMeans)学习笔记 关键字:k-均值.kMeans.聚类.非监督学习作者:米仓山下时间: ...
- iOS学习笔记06—Category和Extension
iOS学习笔记06—Category和Extension 一.概述 类别是一种为现有的类添加新方法的方式. 利用Objective-C的动态运行时分配机制,Category提供了一种比继承(inher ...
- python3学习笔记(5)_slice
#python3 学习笔记17/07/10 # !/usr/bin/env python3 # -*- coding:utf-8 -*- #切片slice 大大简化 对于指定索引的操作 fruits ...
- 【学习笔记】字符串—马拉车(Manacher)
[学习笔记]字符串-马拉车(Manacher) 一:[前言] 马拉车用于求解连续回文子串问题,效率极高. 其核心思想与 \(kmp\) 类似:继承. --引自 \(yyx\) 学姐 二:[算法原理] ...
随机推荐
- 一次有趣的ant-design与后端数据交互的使用
最近有个需求是新闻时间排序与点击量排序,数据库中存储的新闻是按照时间顺序排序的,从后台数据中取出数据,在前端进行页面展示即可. 我用到了ant-design中的Tabs切换页,样式大概如下图. 其实这 ...
- Java中FTPClient上传中文目录、中文文件名乱码问题解决方法【好用】
转: Java中FTPClient上传中文目录.中文文件名乱码问题解决方法 问题描述: 使用org.apache.commons.net.ftp.FTPClient创建中文目录.上传中文文件名时,目录 ...
- Maven 自动打包上传到私服 Nexus
转载于:http://blog.csdn.net/jerome_s/article/details/54410178 Maven获取jar的默认顺序是
- css 中ul li 与 ul>li的区别
ul li :后代选择器,ul 里所有的 li 元素,包括 ol 里的 li ; ul>li :子代选择器,下一级的DOM节点,不包括 ol 里的 li . ul>ol>li :子代 ...
- sublime 成对括号高亮显示设置
ctrl+shift+p/pcip(Package Control : Install Package)/ BracketHighlighter(括号高亮插件)
- oracle中rownum和rowid的区别【转】
rownum和rowid的区别总括: rownum和rowid都是伪列,但是两者的根本是不同的. rownum是根据sql查询出的结果给每行分配一个逻辑编号,所以你的sql不同也就会导致最终rownu ...
- Hdu 5072 Coprime(容斥+同色三角形)
原题链接 题意选出三个数,要求两两互质或是两两不互质.求有多少组这样的三个数. 分析 同色三角形n个点 每两个点连一条边(可以为红色或者黑色),求形成的三条边颜色相同的三角形的个数反面考虑这个问题,只 ...
- Java编程思想 学习笔记8
八.多态 在面向对象的程序设计语言中,多态是继数据抽象和继承之后的第三种基本特征. 多态通过分离做什么和怎么做,从另一角度将接口和实现分离开来. “封装”通过合并特征和行为来创建新的数据类型.“实现 ...
- Java编程思想 学习笔记6
六.访问权限控制 访问控制(或隐藏具体实现)与“最初的实现并不恰当”有关. 如何把变动的事物与保持不变的事物区分开来,这是面向对象设计中的一个基本问题. 为了解决这一问题,Java提供了访问权限修饰词 ...
- Docker部署Consul集群
服务介绍 Consul是一种分布式.高可用.支持水平扩展的服务注册与发现工具.包含的特性有:服务发现.健康检查.键值存储.多数据中心和服务管理页面等. 官方架构设计图: 图中包含两个Consul数据中 ...