字符串与文本操作

字符串:

  • Python 2和Python 3最大的差别就在于字符串

  • Python 2中字符串是byte的有序序列

  • Python 3中字符串是unicode的有序序列

  • 字符串是不可变的

  • 字符串支持下标与切片

# 证明字符串支持切片和下标
In [40]: s = 'hello world!' In [41]: s[0]
Out[41]: 'h' In [42]: s[0:3]
Out[42]: 'hel' In [43]: s[::-1]
Out[43]: '!dlrow olleh' # 证明字符串是不可变类型
In [44]: s[0] = 'L'
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-44-887f788ca844> in <module>()
----> 1 s[0] = 'L' TypeError: 'str' object does not support item assignment

字符串格式化(两种方式)

  • Python字符串支持两种方式格式化

  • print style format

  • format方法

print style format

template % tuple (1)
template % dict (2)
template 为带有一些标记的字符串,使用 tuple 中的元素一次填充
template 为带有一些标记的字符串,使用 dict 中的values按key填充

template 的一般格式:

% (key) flag conversion () () () ()
% 开始 1.可选的 (key) 如果指定了key, 将从字典中获取对应的value, 否则根据位置从元组中获取
2.可选的 flag
3.必选的 conversion

实例:

In []: 'I love %s' % ('Python', )
Out[]: 'I love Python' In []: 'I love %(name)s' % {'name': 'Python'}
Out[]: 'I love Python' In []: 'I love %s, %s is my first lang' % ('Python', 'PY')
Out[]: 'I love Python, PY is my first lang'

flag

Flag 说明 实例

#

此处 # 代表一个数字,指定宽度,如果宽度不够,会更具以下的规则填充

'%3s' % ('a', ) → '••a'

0

使用0填充,仅适用于数字

'%03d' % (1,) → '001'

使用空格填充,默认行为

’%•3d' % (1,) ` → '••1'

flag

Flag 说明 实例

-

右边使用空格填充

'%-3d' % (1,) → '1••'

+

填充之前增加`+` 仅对于正数

'%+03d' % (1, ) → '+01'

Conversion

符号 说明 符号 说明

d

整数

i

整数

o

八进制整数

u

整数,已废弃

x

小写十六进制整数

X

大写十六进制整数

f

浮点数

F

浮点数

e

小写科学计数法

E

大写科学计数法

Conversion

符号 说明 符号 说明

g

同f, 如果指数小于-4,同e

G

同f, 如果指数小于-4,同E

c

字符,接收unicode编码或单字符字符串

a

字符串,使用 ascii 函数转换

r

字符串,使用 repr 函数转换

format函数

template.format(*args, **kwargs) (1) (2) (3) (4)
  1. template 使用 {} 标示变量

  2. {} 或 {\d+} 使用 *args 按顺序填充

  3. {key} 使用 **kwargs 按key填充

  4. Format String Syntax

In []: d = {'a':, 'b': , 'c':}

In []: for k,v in d.items():
....: print('key/value : {0} ==> {1}'.format(k,v))
....:
key/value : b ==>
key/value : a ==>
key/value : c ==>

字符串常用操作

  • 字符串连接 join

In []: lista =['I', 'love', 'Python']

In []: ' '.join(lista)
Out[]: 'I love Python'
  • 字符串分割 splitrsplitsplitlinespartitionrpartition

In []: s.split(':',)
Out[]: ['root', 'x:0:0:root:/root:/bin/bash']
  • 字符串修改-大小写 capitalizetitlelowerupperswapcase

# 此行第一个首字母大写
In [58]: s.capitalize()
Out[58]: 'I love python'
# 每个单词的首字母大写
In [59]: s.title()
Out[59]: 'I Love Python'
# 全部转化为小写
In [60]: s.lower()
Out[60]: 'i love python'
# 全部转化为大写
In [61]: s.upper()
Out[61]: 'I LOVE PYTHON
# 大小写互换
In [63]: s = 'i Love Python'
In [64]: s.swapcase()
Out[64]: 'I lOVE pYTHON'
  • 字符串修改-填充清除 centerljustrjustzfillstriprstriplstrip

# center 填充,一般用在格式化输出
In [65]: s = 'Python'
In [67]: s.center(20,'-')
Out[67]: '-------Python-------' # 去掉换行符strip()
In [68]: s = 'abc\n' In [69]: s.strip()
Out[69]: 'abc'
  • 字符串判断 startswithendswithis*

In [81]: s = 'abcdefg'
# 字符串是以a开头
In [83]: s.startswith('a')
Out[83]: True In [84]: if s.startswith('a'):
....: print('ok')
....:
ok
# 是以g为结尾的.
In [85]: if s.endswith('g'):
print('ok')
....:
ok
  • 字符串查找替换 countfindrfindindexrindex,replace

s = 'root:x:0:0:root:/root:/bin/bash\n'
# count统计个数
In [103] : s.count('root')
Out[103] : 3
In [87]: s = 'root:x:0:0:root:/root:/bin/bash\n'

# replace进行替换,可以指定替换次数.
In [88]: s.replace('root', 'admin', 1)
Out[88]: 'admin:x:0:0:root:/root:/bin/bash\n'

str与bytes

  • Python3中严格区分了文本和二进制数据

  • Python2并没有严格区分

  • 文本数据使用str类型,底层实现是unicode

  • 二进制数据使用bytes类型,底层是byte

  • str使用encode方法转化为bytes

  • bytes方法使用decode方法转化为str

  • 由于清晰的区分文本和二进制,Python3解决了大多数Python2的编码问题

python之字符串的更多相关文章

  1. Python格式化字符串~转

    Python格式化字符串 在编写程序的过程中,经常需要进行格式化输出,每次用每次查.干脆就在这里整理一下,以便索引. 格式化操作符(%) "%"是Python风格的字符串格式化操作 ...

  2. python学习--字符串

    python的字符串类型为str 定义字符串可以用 ‘abc' , "abc", '''abc''' 查看str的帮助 在python提示符里 help(str) python基于 ...

  3. Python格式化字符串和转义字符

    地址:http://blog.chinaunix.net/uid-20794157-id-3038417.html Python格式化字符串的替代符以及含义     符   号     说     明 ...

  4. [转载] python 计算字符串长度

    本文转载自: http://www.sharejs.com/codes/python/4843 python 计算字符串长度,一个中文算两个字符,先转换成utf8,然后通过计算utf8的长度和len函 ...

  5. Python基础-字符串格式化_百分号方式_format方式

    Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...

  6. python判断字符串

    python判断字符串 s为字符串s.isalnum() 所有字符都是数字或者字母s.isalpha() 所有字符都是字母s.isdigit() 所有字符都是数字s.islower() 所有字符都是小 ...

  7. Python格式化字符串

    在编写程序的过程中,经常需要进行格式化输出,每次用每次查.干脆就在这里整理一下,以便索引. 格式化操作符(%) "%"是Python风格的字符串格式化操作符,非常类似C语言里的pr ...

  8. python(七)字符串格式化、生成器与迭代器

    字符串格式化 Python的字符串格式化有两种方式:百分号方式.format方式 1.百分号的方式 %[(name)][flags][width].[precision]typecode (name) ...

  9. Python 的字符串格式化和颜色控制

    (部分内容源自武神博客和网络收集.) Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两 ...

  10. python反转字符串(简单方法)及简单的文件操作示例

    Python反转字符串的最简单方法是用切片: >>> a=' >>> print a[::-1] 654321 切片介绍:切片操作符中的第一个数(冒号之前)表示切片 ...

随机推荐

  1. E. Change-free

    Student Arseny likes to plan his life for n days ahead. He visits a canteen every day and he has alr ...

  2. Javascript面对对象. 第四篇

    原型模式创建对象也有自己的缺点,它省略看构造函数传参初始化这一过程,带来的缺点就是初始化的值都是一致的. 而原型最大的缺点就是它优点,那就是共享. 原型中所有属性是被很多实例共享的,共享对于函数非常合 ...

  3. css中书写小三角

    我们在开发过程中,有很多的方向标签不是图片,而是用css方法书写上去的. 首先我们要了解原理,border的边框的脚步是45度角. 向左方向: width:0px: height:0px: borde ...

  4. 我的JS 中级学习篇

    在codefordream上进入中级学习后,感觉立马从js的基础学习往前跳了好远,上面的东西好像都是第一次看到一样.这时候才发现,说来也曾接触过js,但是这时候才发现对js的认识就停在知道两点:js中 ...

  5. 支持缩放的fresco图片控件 —— fresco sample: ZoomableDraweeView

    最近在实现一个类似淘宝中的评论列表的功能,其中要在列表中显示评论图,点击图片后显示大图进行查看,各家app几乎都会有这样的功能. 可以看到,一个体验较好的查看大图的基本功能有, 第一,左右滑动时切换图 ...

  6. Professional C# 6 and .NET Core 1.0 - Chapter 41 ASP.NET MVC

    What's In This Chapter? Features of ASP.NET MVC 6 Routing Creating Controllers Creating Views Valida ...

  7. [看图说话] 基于Spark UI性能优化与调试——初级篇

    Spark有几种部署的模式,单机版.集群版等等,平时单机版在数据量不大的时候可以跟传统的java程序一样进行断电调试.但是在集群上调试就比较麻烦了...远程断点不太方便,只能通过Log的形式,进行分析 ...

  8. java(jdk1.7) IO系列01之InputStream和OutputStream解析

    1.InputStream和OutputStream简介 在java中InputStream和OutputStream分别代表字节输入流和字节输出流,表示以字节的方式来实现进程或者程序的通信,Inpu ...

  9. Jemter性能测试

    Jmeter 介绍 Jmeter  是一款使用Java开发的,开源免费的,测试工具, 主要用来做功能测试和性能测试(压力测试/负载测试). 而且用Jmeter 来测试 Restful API, 非常好 ...

  10. Java创建对象的几种方式

    解析:Java创建对象的几种方式(重要):(1) 用new语句创建对象,这是最常见的创建对象的方法.(2) 运用反射手段,调用java.lang.Class或者java.lang.reflect.Co ...