第三章  字符串

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第三章-字符串的更多相关文章

  1. python 第三章 字符串-例1

    1.字段宽度和精度 >>>'%.*s' % (10,'Gruido') '     Guido' >>>'%.-*s' % (10,'Gruido') 'Guido ...

  2. 简学Python第三章__函数式编程、递归、内置函数

    #cnblogs_post_body h2 { background: linear-gradient(to bottom, #18c0ff 0%,#0c7eff 100%); color: #fff ...

  3. Python第三章(北理国家精品课 嵩天等)

    一.数字类型及其操作 整数:pow(x,y),想算多大,就算多大:以0b或0B开头表示二进制:以0o或0O开头表示八进制:以0x或0X开头表示十六进制. 浮点数:取值范围-10^308至10^308, ...

  4. <<C++ Primer>> 第三章 字符串, 向量和数组 术语表

    术语表 第 3 章 字符串, 向量和数组 begin: 是 string 和 vector 的成员,返回指向第一个元素的迭代器.也是一个标准库函数,输入一个数字,返回指向该数字首元素的指针.    缓 ...

  5. python第三章:循环语句--小白博客

    Python条件语句 Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. 可以通过下图来简单了解条件语句的执行过程: Python程序语言指定任何非0和非 ...

  6. 2 python第三章文件操作

    1.三元运算 三元运算又称三目运算,是对简单的条件语句的简写,如: 简单条件语句: if 条件成立: val = 1 else: val = 2 改成三元运算: val = 1 if 条件成立 els ...

  7. Python第三章-输入输出和运算符

    输入输出和运算符 一.输入和输出 1.1 输出 `print()`函数用来向终端输出数据(其实也可以向文件输出数据,后面再讲) 可以传递多个参数,则输出的时候 python 会把多个参数的值用空格隔开 ...

  8. python基础三之字符串

    Python的数据类型 数字(int),如1,2,3,用于计算. 字符串(str),如s = 'zxc',储存少量数据,进行操作. 布尔值(bool),True和False,用于进行判断. 列表(li ...

  9. python第三章:函数

    在前面章节中,介绍了一些input(),print(),len()等内建函数,还有random,math等标准库相关函数,这些都是可以直接使用的,但是很多时候,我们也是可以编写自己的函数. 看个例子: ...

随机推荐

  1. 设计模式之抽象工厂模式(Abstract Factory Pattern)

    一.抽象工厂模式的由来 抽象工厂模式,最开始是为了解决操作系统按钮和窗体风格,而产生的一种设计模式.例如:在windows系统中,我们要用windows设定的按钮和窗体,当我们切换Linux系统时,要 ...

  2. 大牛带你学会java类加载机制,不要错过,值得收藏!

    很多人对java类加载机制都是非常抗拒的,因为这个太难理解了,但是我们作为一名优秀的java工程师,还是要把java类加载机制研究和学习明白的,因为这对于我们在以后的工作中有很大的帮助,因为它在jav ...

  3. 代理模式详解:静态代理、JDK动态代理与Cglib动态代理

    代理模式简介分类 概念 ​ 代理,是为了在不修改目标对象的基础上,增强目标方法的业务逻辑. ​ 客户类需要执行的是目标对象的目标方法,但是真正执行的是代理对象的代理方法,客户类对目标对象的访问是通过代 ...

  4. Typora的一些快捷键

      语法格式 快捷键 标题 # + 空格 = 一级标题, ## + 空格 =二级标题, 以此类推 shift + 数字1 =一级标题 ,shift + 数字2 =二级标题 , 以此类推 有序列表 1 ...

  5. java 动态规划解决最大连续子数列和

    很多动态规划算法非常像数学中的递推.我们如果能找到一个合适的递推公式,就能很容易的解决问题.我们用dp[n]表示以第n个数结尾的最大连续子序列的和,这里第n个数必须在子序列中.于是存在以下递推公式: ...

  6. python列表,元组,字典,集合的比较总结

    这四个都是python中的序列,用于存放数据,他们区别总结如下:   列表list 元组tuple 字典dictionary 集合set 是否可变 可变 不可变 可变 可变 是否有序 有序 有序 无序 ...

  7. Hznu_0j 1533 计算球体积(水)

    题意:根据输入的半径值,计算球的体积: Input 输入数据有多组,每组占一行,每行包括一个实数,表示球的半径. Output 输出对应的球的体积,对于每组输入数据,输出一行,计算结果保留三位小数. ...

  8. [差分][二分][贪心]luogu P3634 [APIO2012]守卫

    题面 https://www.luogu.com.cn/problem/P3634 给m个限制,可以是一段区间中必须有或者必须无忍者 最多有k个忍者,问有多少个位点一定有忍者 分析 首先用差分标记一下 ...

  9. Ubuntu20.04linux内核(5.4.0版本)编译准备与实现过程-编译过程(2)

    前面因为博客园维修,所以内核编译过程一直没有发出来,现在把整个内核过程分享出来.本随笔给出内核的编译实现过程,在编译前需要参照我前面一篇随笔: Ubuntu20.04linux内核(5.4.0版本)编 ...

  10. 京东 vue3 组件库震撼升级,如约而至!

    京东零售开源项目 NutUI 是一套京东风格的轻量级移动端 Vue 组件库,是开发和服务于移动 Web 界面的企业级产品.经过长时间的开发与打磨,NutUI 3.0 终于和大家见面了!3.0 版本在技 ...