python之字符串
字符串与文本操作
字符串:
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 | 说明 | 实例 |
|---|---|---|
|
# |
此处 |
|
|
0 |
使用0填充,仅适用于数字 |
|
|
• |
使用空格填充,默认行为 |
’%•3d' % (1,) ` → '••1' |
flag
| Flag | 说明 | 实例 |
|---|---|---|
|
- |
右边使用空格填充 |
|
|
+ |
填充之前增加`+` 仅对于正数 |
|
Conversion
| 符号 | 说明 | 符号 | 说明 |
|---|---|---|---|
|
d |
整数 |
i |
整数 |
|
o |
八进制整数 |
u |
整数,已废弃 |
|
x |
小写十六进制整数 |
X |
大写十六进制整数 |
|
f |
浮点数 |
F |
浮点数 |
|
e |
小写科学计数法 |
E |
大写科学计数法 |
Conversion
| 符号 | 说明 | 符号 | 说明 |
|---|---|---|---|
|
g |
同f, 如果指数小于-4,同e |
G |
同f, 如果指数小于-4,同E |
|
c |
字符,接收unicode编码或单字符字符串 |
a |
字符串,使用 |
|
r |
字符串,使用 |
format函数
template.format(*args, **kwargs) (1) (2) (3) (4)
template使用{}标示变量{}或{\d+}使用*args按顺序填充{key}使用**kwargs按key填充
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'
字符串分割
split,rsplit,splitlines,partition,rpartition
In []: s.split(':',)
Out[]: ['root', 'x:0:0:root:/root:/bin/bash']
字符串修改-大小写
capitalize,title,lower,upper,swapcase
# 此行第一个首字母大写
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'
字符串修改-填充清除
center,ljust,rjust,zfill,strip,rstrip,lstrip
# 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'
字符串判断
startswith,endswith,is*
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
字符串查找替换
count,find,rfind,index,rindex,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之字符串的更多相关文章
- Python格式化字符串~转
Python格式化字符串 在编写程序的过程中,经常需要进行格式化输出,每次用每次查.干脆就在这里整理一下,以便索引. 格式化操作符(%) "%"是Python风格的字符串格式化操作 ...
- python学习--字符串
python的字符串类型为str 定义字符串可以用 ‘abc' , "abc", '''abc''' 查看str的帮助 在python提示符里 help(str) python基于 ...
- Python格式化字符串和转义字符
地址:http://blog.chinaunix.net/uid-20794157-id-3038417.html Python格式化字符串的替代符以及含义 符 号 说 明 ...
- [转载] python 计算字符串长度
本文转载自: http://www.sharejs.com/codes/python/4843 python 计算字符串长度,一个中文算两个字符,先转换成utf8,然后通过计算utf8的长度和len函 ...
- Python基础-字符串格式化_百分号方式_format方式
Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...
- python判断字符串
python判断字符串 s为字符串s.isalnum() 所有字符都是数字或者字母s.isalpha() 所有字符都是字母s.isdigit() 所有字符都是数字s.islower() 所有字符都是小 ...
- Python格式化字符串
在编写程序的过程中,经常需要进行格式化输出,每次用每次查.干脆就在这里整理一下,以便索引. 格式化操作符(%) "%"是Python风格的字符串格式化操作符,非常类似C语言里的pr ...
- python(七)字符串格式化、生成器与迭代器
字符串格式化 Python的字符串格式化有两种方式:百分号方式.format方式 1.百分号的方式 %[(name)][flags][width].[precision]typecode (name) ...
- Python 的字符串格式化和颜色控制
(部分内容源自武神博客和网络收集.) Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两 ...
- python反转字符串(简单方法)及简单的文件操作示例
Python反转字符串的最简单方法是用切片: >>> a=' >>> print a[::-1] 654321 切片介绍:切片操作符中的第一个数(冒号之前)表示切片 ...
随机推荐
- [商业_法务] 2、注册公司起名很费劲,用C++怒写个随机名字生成器
前言 博主最近在注册公司,由于之前听说过注册公司的名字很难通过,于是便直接找代理去帮忙跑趟,为确保万无一失,还自己绞尽脑汁想了几个很奇葩的名字(噬菌体.云木.灌木.杏仁...). 但是不幸的是那些奇葩 ...
- 【原创】python中文编码问题深入分析(二):print打印中文异常及显示乱码问题分析与解决
在学习python以及在使用python进行项目开发的过程中,经常会使用print语句打印一些调试信息,这些调试信息中往往会包含中文,如果你使用python版本是python2.7,或许你也会遇到和我 ...
- HBase介绍
欢迎和大家交流技术相关问题:邮箱: jiangxinnju@163.com博客园地址: http://www.cnblogs.com/jiangxinnjuGitHub地址: https://gith ...
- TCP协议详解
TCP协议详解 一.TCP协议 1.TCP 通过以下方式提供可靠性: · ◆ 应用程序分割为TCP认为最合适发送的数据块.由TCP传递给IP的信息单位叫做报文段. · ◆ 当TCP发出一个报文段后 ...
- .c与.cpp的区别解析
这几天在练习数据结构等知识的时候,有时遇见文件保存为c后缀则能编译通过,有时又是保存cpp后缀才能通过.对于这个都没能区分清,是自己的基本功问题,于是百度了一下.幸好有许多和我一样有问题的人. 其实简 ...
- RAID分类
1. RAID在数据库存储上的应用 随着单块磁盘在数据安全.性能.容量上呈现出的局限,磁盘阵列(Redundant Arrays of Inexpensive/Independent Disks, ...
- BZOJ1115:[POI2009]石子游戏Kam(博弈论)
挺水的 听说是阶梯nim和,就去看了一下,然后就会了= = 观察题目,发现拿第i堆棋子k个造成的影响就是第i+1堆棋子能多拿k个 可以把模型转化为,有n堆石子,每次从某一堆拿一个石子,放在下一堆中,不 ...
- Linux下软件设成系统服务运行
将软件的启动脚本copy到/etc/init.d/soft_name chmod 777 soft_name 设置服务开机启动 chkconfig soft_name ...
- Bean复制
有的时候我们需要将一个bean的属性赋值到另一个bean的属性中,比如用户提交过来的表单bean需要将该bean中的属性值赋值到对应的数据库bean,我们通常会以这样的方式做: User user = ...
- Jmeter+Badboy实战经验二(使用jmeter)
1. 新建线程组: TestPlan--添加--Threads(Users)--线程组