Python 字符串 (3) 持续更新
字符串操作
虽然字符串也是一种序列,但是它和元组一样,不可变的。当你想对它修改时,会引发异常。如
>>> strings = "Let's go"
>>> strings[2] = 'B'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
其他的标准的序列操作,都是可以的。
>>> strings[2]
't'
格式化字符串
>>> formats = 'I am %s'
>>> values = 'zhao'
>>> formats % values
'I am zhao'
formats 是格式化的字符串 values 希望被格式化的值,如果格式化的值有多个的话,一般使用元组。
>>> formats = 'My name is %s , I come from %s'
>>> values = 'Zhao','China'
>>> formats % values
'My name is Zhao , I come from China'
注意 使用列表和其他序列代替元组,只会格式化一个值。只有元组和字典格式化多个值。
其中 %s 称为 转换说明符 (conversion specifier) s 表示格式化字符串 , 关于其他的可以看表 3 - 1
如果格式化字符串中,包含 % ,那么使用 %% 。就不会误认为转换说明符了。
>>> formats = 'My name is %% %s , I come from %s'
>>> formats % values
'My name is % zhao , I come from china'
格式化字符串希望保留小数位数 如
>>> fomats = 'Pi is %.3f'
>>> fomats % pi
'Pi is 3.142'
%.3f .3 表示保留的浮点数位数 f 表示浮点数
模板字符串
>>> from string import Template
>>> s = Template('$x is $x')
>>> s.substitute(x='111')
'111 is 111'
如果替换是单词的一部分,必须用 中括号 %{x} 扩起来,不扩起来会引发异常
>>> s = Template("${x}ssss $x ${x}fffff")
>>> s.substitute(x='BB')
'BBssss BB BBfffff'
如果插入美元符号 $$
>>> s = Template("${x}ssss $$ $x ${x}fffff")
>>> s.substitute(x='BB')
'BBssss $ BB BBfffff'
除了关键字参数以外,还可以用字典 键值对形式
>>> s = Template("A $thing $run")
>>> d = {}
>>> d['thing'] = 'thingsssss'
>>> d['run'] = 'runnnnn'
>>> s.substitute(d)
'A thingsssss runnnnn'
用 safe_substitute 方法 不会因为缺少值,而报错。
下面这种格式化字符串会报错,元组 需要 括号 扩起来
错误的
>>> '%s %s %s' % 1,2,3
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: not enough arguments for format string
正确应该
>>> '%s %s %s' % (1,2,3)
'1 2 3'
详细的转换说明符
(1) %字符:标记开始转换说明符
(2) 转换标志(可选): - 表示左对齐; + 表示在转换值之前要加上正负号;"" 表示正数之前保留空格 0 表示转换值若位数不够则用9填充。
(3) 最小字段宽带(可选): 转换后的字符串至少具有该值指定宽度。 如果 * ,则宽度会从元组读出。
(4) 点 (.) 后跟精度值 (可选):如果转换的是实数,精度值就表示出现在小数点后的位数。如果转换的是字符串,那么该数字就表示最大字段宽度。如果 * ,则精度会从元组中读出。
示例一 带符号十进制整数
>>> 'Price of eggs:$%d' % 42
'Price of eggs:$42'
>>> from math import pi
>>> 'pi is %i' % pi
'pi is 3'
示例二 不带符号十六进制
>>> 'Hexadecimal price of eggs %X' % 42
'Hexadecimal price of eggs 2A'
>>> 'Hexadecimal price of eggs %x' % 42
'Hexadecimal price of eggs 2a'
示例三 str函数转换对象
>>> 'Using str of %s' % 42L
'Using str of 42'
示例四 repr函数转换对象
>>> 'Using repr of %r' % 42L
'Using repr of 42L'
字符串表示函数 str、repr
str 把值转换合理的字符串形式,以便用户理解。
repr 把值转换Python表达的字符串形式。
如
>>> str("Let's go!")
"Let's go!"
>>> repr("Let's go!")
'"Let\'s go!"'
示例五 字段宽度 和 精度
字段宽度 20
>>> '%20s' % 'hello world!'
' hello world!'
精度 2
>>> '%.2f' % 10.9373
'10.94'
>>> '%.2s' % 'Hello World!'
'He'
字段宽度 20 精度 2
>>> '%20.2s' % 'Hello World!'
' He'
用 * 号 代替字段宽度 和 精度
>>> '%*.*s' % (10,2,'Hello World!')
' He'
符号、对齐和0填充 针对数字
字段宽度和精度值之前放置一个'标志',标志 有 零、加号、减号和空格。
示例 零
>>> '%010.2f' % pi
'0000003.14'
示例 减 左对齐数值
>>> '%-10.2f' % pi
'3.14 '
示例 加 显示正负数符号
>>> print('%+10.2f' % 3.14) + '\n'+ ('%+10.2f' % -3.14)
+3.14
-3.14
示例 空格 对齐正负数
>>> print('% 10.2f' % 3.14) + '\n'+ ('% 10.2f' % -3.14)
3.14
-3.14
一个比较简单的程序示例
width = input('Please enter width:') price_width = 10
item_width = width - price_width header_format = '%-*s%*s'
sub_format = '%-*s%*.2f' print '=' * width print header_format % (item_width, 'Item', price_width, 'Price') print '-' * width print sub_format % (item_width, 'Apple', price_width, 2.4)
print sub_format % (item_width, 'Samsung', price_width, 1.4) print '=' * width
字符串方法
函数一 find
>>> text_content = "Let's go go!"
>>> text_content.find('go')
6
>>> text_content.find('go2')
-1
>>> text_content.find('Let')
0
find 函数 第二个和第三个参数 值的 起始点和终止点
>>> text_content.find('go',1,5)
-1
>>> text_content.find('go',8)
9
函数二 join
join 连接序列中的每个元素 而且连接的元素,必须是字符串
它是 split 逆方法
>>> __list = [1,2,3,4,5]
>>> __str = '+'
>>> __str.join(__list)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: sequence item 0: expected string, int found
>>> __list = ['','','','','']
>>> __str.join(__list)
'1+2+3+4+5'
函数三 lower
lower 把字符串转换为小写字符母
>>> 'How Are You'.lower()
'how are you'
还有一些其他相关的有 translate、islower、capitalize、swapcase、title、istitle、upper、isupper
>>> 'how are you'.title()
'How Are You'
>>> import string
>>> string.capwords("that's all, folks")
"That's All, Folks"
函数四 replace
replace 返回某字符串所有匹配项被替换后的字符串。
>>> 'go go go go go is go'.replace('go','egg')
'egg egg egg egg egg is egg'
关联的其他函数 translate、expandtabs
函数五 split
>>> '1+2+3+4+5'.split('+')
['', '', '', '', '']
如果不提供分隔符,程序会把所有(空格、制表符、换行符)作为分隔符。
关联的其他函数 join、rsplit、splitlines
函数六 strip
>>> ' go go go '.strip()
'go go go'
strip 去除两个(不包括内部)空格字符串。也可以去除指定符号
>>> '1122** go go go 112222** '.strip('12* ')
'go go go'
其他函数
lstrip 删除字符串左边的指定字符
rstrip 删除字符串右边的指定字符
函数七 translate
translate替换单个字,它优势可以同时进行多个替换,有些时候比replace效率高。
>>> intab = 'a'
>>> outtab = ''
>>> trantab = maketrans(intab,outtab)
>>> str = 'abal'
>>> print str.translate(trantab)
0b0l
maketrans 函数接受两个参数 两个等长的字符串。它返回的是 转换表 其他函数:replace,lower
函数八 upper 大写
>>> 'hello'.upper()
'HELLO'
函数九 capwords 首字母大写
>>> string.capwords('hello words!')
'Hello Words!'
Python 字符串 (3) 持续更新的更多相关文章
- LeetCode python实现题解(持续更新)
目录 LeetCode Python实现算法简介 0001 两数之和 0002 两数相加 0003 无重复字符的最长子串 0004 寻找两个有序数组的中位数 0005 最长回文子串 0006 Z字型变 ...
- LeetCode 题目的 Python 实现(持续更新中)
Python-LeetCode 是一个使用 Python 语言解决 LeetCode 问题的代码库,库有以下几个方面需要注意: 所有题目都是 AC 的: 按照题目顺序,每 50 个放在一个目录下,方便 ...
- Python相关工具清单[持续更新]
SublimeJEDI : awesome Python autocompletion with SublimeText. Awesome Python : A curated list of awe ...
- Python 字典 (4) 持续更新
字典一种用名字来引用值的数据结构,这种数据结构称为 映射(mapping) .字典中的键可以是数字.字符串和元组. 字典 创建和使用 创建 phonebook = {'Aaron':133000000 ...
- python笔记(持续更新)
1.编译python遇到下面的编码问题: SyntaxError: Non-ASCII character '\xe9' in file E:\projects\learn.py on lin ...
- python tips(持续更新中)
python tips 可变对象与不可变对象 在python中,可变对象有数值类型(int,float),字符串(str),元组(tuple),可变对象有列表(list),字典(dict),集合(se ...
- Python小练习(持续更新....)
最近一直在学习python,这些小练习有些是书上的,有些是别人博客上的! # 1.题目1# 给一个字符串,统计其中的数字.字母和其他类型字符的个数:# 比如输入“124mid-=”,输出:数字=3,字 ...
- python内置模块笔记(持续更新)
常用函数name = '{wh}my \t name is {name},age is {age}.' print(name.capitalize()) # 字符串的开头字母大写 print(name ...
- python tips(持续更新)
1. 引用上一层目录 import syssys.path.append('..')import xx 2. python json JSON是一种轻量级的数据交换格式.可以解决数据库中文存储问题,对 ...
随机推荐
- 最新 东方明珠java校招面经 (含整理过的面试题大全)
从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.东方明珠等10家互联网公司的校招Offer,因为某些自身原因最终选择了东方明珠.6.7月主要是做系统复习.项目复盘.Leet ...
- 43.QQ聊天软件GUI窗口编写
QQ聊天软件代码功能编写 一,Tkinter聊天界面编写 1,聊天软件客户端界面开发-1 Tkinter的模块(“TK接口”)是标准的Python接口从Tk的GUI工具包 https://i.cnbl ...
- [CF429E]Points ans Segments_欧拉回路
Points and Segments 题目链接:www.codeforces.com/contest/429/problem/E 注释:略. 题解: 先离散化. 发现每个位置如果被偶数条线段覆盖的话 ...
- Hanlp-地名识别调试方法详解
HanLP收词特别是实体比较多,因此特别容易造成误识别.下边举几个地名误识别的例子,需要指出的是,后边的机构名识别也以地名识别为基础,因此,如果地名识别不准确,也会导致机构名识别不准确. 类型1 数字 ...
- [转] Slf4j MDC机制
MDC ( Mapped Diagnostic Contexts ),线程安全的诊断日志存放容器. 可用于存放线程的全局日志信息, 通过xml配置后可以打印在日志中,用于日志记录.定位.分析 相关:h ...
- python — 函数基础知识(二)
目录 1 返回值 2 作用域 3 函数小高级 4 函数中高级 1 返回值 def func(arg): # .... return 9 # 返回值为9 默认:return None val = fun ...
- 怎样限制第三方Cookie
使用Cookie的 SameSite 属性. 1. SameSite=Strict; 这个模式下, 服务器将会完全禁止第三方Cookie, 在跨站点时, 任何情况下都不会发送Cookie, 也就是说, ...
- vue采坑之——vue里面渲染html 并添加样式
在工作中,有次遇到要把返回的字符串分割成两部分,一部分用另外的样式显示. 这时候,我想通过对得到字符串进行处理,在需要特别样式的字符串片段用html标签(用的span)包裹起来再通过变量绑定就好了.不 ...
- HTML练习二--动态加载轮播图片
接上一篇https://www.cnblogs.com/shuaimeng/p/11106655.html demo下载: https://pan.baidu.com/s/1dhvzHwTHKiguy ...
- 异常:Invalid character found in the request target. The valid characters are defined in RFC 3986
一.背景 事情是这样的,前几天做一个基本的数据库“增删改查”的需求,前端传参的方式是“JSON字符串”,后端接收到此参数后,使用阿里巴巴fastjson进行解析,然后入库.需求很简单吧,但是偏偏遇到问 ...