Python3 字符串

字符串是一个有序的字符序列

如何表示一个字符串:

在非注释中凡是用引号括起来的部分都是字符串;

‘  单引号     ”  双引号      ‘’‘  三单引号    “”“  三双引号

非空字符串中的表示方法:

‘hello’  、   “hello”  、  “”“hello”“”  、 ‘’‘hello’‘’

单引号和双引号三引号的区别:

单引号内的双引号不算结束符;

双引号内的单引号不算结束符;

三引号字符串,也叫所见即所得字符串,
                       字符串中可以包含换行符、制表符以及其他特殊字符; 字符串的换行直接被记录在字符串内部;

>>> "I'm  a  tree."
"I'm a tree."
>>> 'I am a "tree".'
'I am a "tree".'
>>>
>>> x = 'hello\nworld!'
>>> y = """hello
world!"""
>>> if x == y:
print("两个字符串相同!") 两个字符串相同!
>>> print(x)
hello
world!
>>> print(y)
hello
world!
>>>

空字符串的表示方法:

‘ ’   、  “ ”  、   '''   '''  、   “”“   ”“”

空字符串的布尔值(bool)为False。

>>> x = ''
>>> bool(x)
False
>>> x = ' '
>>> bool(x)
True
>>>

换行符(\n ):

print("hello\nworld!")

隐式字符串拼接:

x = “aaaaaaaaaaaa”

“aaaaaaaaaaaa”

“aaaaaaaaaaaa”

s = “I'm” ' a tree' 'name:"yangshu" '

用转义序列代表特殊字符;字符串常量中用字符反斜杠 \    ;  后跟一些字符代表特定含义的字符;

\'   单引号 、 \"  双引号 、   \n  换行符

转义字符    描述
\(在行尾时) 续行符
\\ 反斜杠符号
\' 单引号
\" 双引号
\a 响铃
\b 退格(Backspace)
\e 转义
\000 空
\n 换行
\v 纵向制表符
\t 横向制表符
\r 回车
\f 换页
\oyy 八进制数,yy代表的字符,例如:\o12代表换行
\xyy 十六进制数,yy代表的字符,例如:\x0a代表换行
\uXXX Unicode16位的十六进制表示
\uXXXXXXXX Unicode32位的十六进制表示

ASCII  字符表

#man ascii <回车>待补充

中文 “\u4e2d\u6587”

Unicode

UTF-8 (unicode  transfrom font)

常用的ASCII编码:

字符          十进制            十六进制

‘0’               48                      0x30

'A'               65                     0x41

'a'               97                      0x61

raw 字符串(原始字符串)

格式: r‘C:\Windows\System32’

'C:\\Windows\\System32'

作用: 将字符串内的反斜杠不做为转义字符。

序列相关的字符串函数:

len(x)函数用于获取字符串序列的长度(长度指字节数);

max(seq) 函数用于获取一个字符串的最大值的字符;

min(seq) 函数用于获取一个字符串的最小值的字符;

>>> >>> len("ASDF")
4
>>> max("Aa1Bb2")
'b'
>>> min("Aa1Bb2")
''
>>>

字符串代码转换函数:

ord(str)  返回一个字符的ASCII的值;

chr(i)     返回i这个值所对应的字符;

数字转换为字符串函数:

hex(i)  将整数转换为十六进制字符串

oct(i)   将整数转换为八进制字符串

bin(i)  将整数转换为二进制字符串

注:int(‘1234’, 10)#1234   转换为十进制

将字符串转换为整数:

int(x, base=0) 将字符串转换为整数

float

bool

complex

将对象转换为字符串类型str函数

str(x)  x可以是任意对象

为什么要字符串转换?

“123” + 4

123 + 4  #127 整数     、    “123” + str(4)  # 1234 新的字符串

字符串的运算:

+     +=           *     *=

+ 加号运算符用于拼接字符串

+=  运算符用源字符串与右边字符串拼接生成新的字符串

>>> 'abc' + ''
'abc123'
>>> '' + 'abc'
'123abc'
>>>
>>> a = "ABC"
>>> b = "DEF"
>>> c = a + b
>>> print(c)
ABCDEF
>>> a
'ABC'
>>> a += b
>>> a
'ABCDEF'
>>>

*  运算符生成重复字符串

*=  运算符生成重复字符串并改变变量的绑定;  (*=右侧的对象只能是整数)

>>> b
'DEF'
>>> b * 3
'DEFDEFDEF'
>>>

>>> x = "123"
  >>> x *= 4
  >>> print(x)
  123123123123
  >>>

in   、 not  in  运算符

作用:in/not 用于序列,字典,集合中,用于判断某个值是否存在于对象中, 存在返回TRUE,不存在返回FALSE;

not  in 与in 返回值相反;

>>> s = "My name is 'xiaoming'"
>>> if 'is' in s:
print("is在字符串s中")
else: print("is不在字符串s中")
>>>

字符串比较:

>     >=      <    <=    ==     !=

>>> "ABC" > "ABB"
True
>>> "ADC" < "ABC"
False
>>> "ABC" >= ""
True
>>> "AD" >= "ABC"
True
>>> "AB" < "ABC"
True
>>> "ABC" == "abc"
False
>>>

python 运算符优先级(自上而下,由高到低):

**    指数

~ , + , -    按位反转, 一元正号, 一元负号

* , / , // ,  %   乘。。。

+ , -  加法减法

>>   <<   右移左移

&         位于

^          异位或

|        位或

<  , <=   ,> ,>=, ==,  !=  , is ,  is not ,   in  , not in 比较等。。

not

and

or

if    else 条件表达式

索引 index

python字符串是不可以改变的“字符”序列。

语法:字符串{【整数值】

说明:  序列都可以用索引(index)来访问序列的对象。

序列正向的索引是从0开始的, 第二个索引为1 ......最后一个为   len(s)-1

序列的反向 索引是从-1开始的, -2 代表倒数第二个....., 最后一个是 -len(s)

#!/usr/bin/python

s = input("请输入一个字符串:")
print("第一个字符", s[0],"和",s[-len(s)])
print("中间字符串:",s[len(s)//2])
print("最后一个字符:",s[-1],"和",s[len(s)-1])
>>> ================================ RESTART ================================
>>>
请输入一个字符串:abcdefgh
第一个字符 a 和 a
中间字符串: e
最后一个字符: h 和 h
>>>

切片 slice (分片)

用于字符串中,从字符串序列中取出相应的元素,重新组成一个新的字符串序列。

语法: 字符串【(开始索引b): (结束索引e) :(步长s)】      ;注:小括号括起来的部分代表可以省略;

>>> s = "abcdefgh"
>>>
>>> s[:]
'abcdefgh'
>>> s[2:4]
'cd'
>>> s[2:3]
'c'
>>> s[2:2]
''
>>> s[2:0]
''
>>> s[2:]
'cdefgh'
>>> s[:2]
'ab'
>>>

>>> s[0:6:2]
'ace'
>>> s[0:100:2]
'aceg'
>>> s[::2]
'aceg'
>>> s[::3]
'adg'
\
>>> s[::4]
'ae'
>>> s[::5]
'af'
>>> s[::100]
'a'
>>>

字符串的方法(method)

字符串属性的方法: 对象.属性

s.lower()            生成将英文转化为小写的字符串;

s.upper()          生成将英文转化为大写的字符串;

s.title()               生成将因为单词首字母大写的字符串;

s.isdigit()            判断字符串是否为数字

s.isalpha()          判断字符串是否为英文字符

s.islower()          判断字符串是否都为小写字符串

s.isupper()          判断字符串是否都为大写字符串

s.strip()               返回去掉左右空白字符串的字符串;

s.lstrip()             返回去掉左空白字符串的字符串;

s.rstrip()              返回去掉右空白字符串的字符串;

s.count(sub,  [, start [,end]])   返回一个字符串子串的个数;

s.find(sub [, start [, end]])    返回一个字符串sub的索引,失败返回-1  ;

s.replace(old, new [, count])    用新字符串替换旧字符串 ;

>>> ''.isalpha()
False
>>> "ABC".isalpha()
True
>>> "AB C".isalpha()
False
>>> "ABC".strip()
'ABC'
>>> " ABC \n".strip()
'ABC'
>>> " ABC \n".rstrip()
' ABC'
>>> "AB AC ABC".find("AB")
0
>>> "AB AC ABC".find("AB", 1)
6
>>> "AB AC ABC".find("AB", 0)
0
>>>
>>> "AB AC ABC".find("A", 4)
6
>>> "AB AC ABC".find("A", 4, 7)
6
>>> "AB AC ABC".find("A", 4, 6)
-1
>>> "AB AC ABC".replace("AB", "")
' AC C'>>> "AB AC ABC".replace("AB", "++++++")
'++++++ AC ++++++C'
>>>

用help 查找str 这个类型的帮助;

help(str)

help("__main__")

字符串的格式化表达式:

运算符   %

作用: 生成一定格式的字符串;

语法: 格式化字符串  %   参数值 ;  或者    格式化字符串  %  (参数值1,参数值2.。。。)

格式化字符串中的占位符:

%s        字符串

%r         字符串,使用repr(而不是str)

%c         整数转单个字符

%d         十进制整数

%o         八进制整数

%x          十六进制整数(字符a-f 小写)

%X         十六进制整数  (字符A-F大写)

%e         指数型浮点数,如2.9e + 8

%E        指数型浮点数,如2.9E + 8

%f,%F    浮点十进制形式

%%        等同于一个%

>>> name = 'xiaoming'
>>> age =
>>> "name: %s, age: %d" % (name, age)
'name: xiaoming, age: 23'
>>> "%(name)s今年%(age)d岁." % {'age':, 'name':'xiaoming'} #基于字典的格式化
'xiaoming今年23岁.'
>>>

占位符和类型码之间的格式语法:

-   号  左对齐、  + 右对齐 、 0 补零  、  width 宽度 、  pricision 精度;

>>> "%10d" %
''
>>> "%-10d" %
'123 '
>>> "%10d" % -
' -123'
>>> "%-10d" % -
'-123 '
>>> "%0d" %
''
>>> "%010d" %
''
>>> "%10s" % "abc"
' abc'
>>> "%7.2f" % 1.2345678 #宽度7, 保留小数点2位
' 1.23'
>>>

Python之路,第四篇:Python入门与基础4的更多相关文章

  1. python之路第四篇(基础篇)

    一.冒泡算法实现: 方法一: li = [13,33,12,80,66,1] print li for m in range(4): num1 = li[m] num2 = li[m+1] if nu ...

  2. Python之路(第四篇):Python基本数据类型列表、元组、字典

    一.列表 1.列表 list ,是一个类,li = [1,2,"nicholas"] li是通过list类创建的对象. 2.list特点: 用中括号括起来,用逗号分割每个元素,列表 ...

  3. 【Python之路】第九篇--Python基础之线程、进程和协程

    进程与线程之间的关系 线程是属于进程的,线程运行在进程空间内,同一进程所产生的线程共享同一内存空间,当进程退出时该进程所产生的线程都会被强制退出并清除.线程可与属于同一进程的其它线程共享进程所拥有的全 ...

  4. Python之路(第五篇) Python基本数据类型集合、格式化、函数

    一.变量总结 1.1 变量定义 记录某种状态或者数值,并用某个名称代表这个数值或状态. 1.2 变量在内存中的表现形式 Python 中一切皆为对象,数字是对象,列表是对象,函数也是对象,任何东西都是 ...

  5. 【Python之路】特别篇--Python面向对象(进阶篇)

    上一篇<Python 面向对象(初级篇)>文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使 ...

  6. Python之路【第九篇】堡垒机基础&数据库操作

    复习paramiko模块 Python的paramiko模块,是基于SSH用于连接远程服务器并执行相关操作. SSHClient #!/usr/bin/env python #-*- coding:u ...

  7. Python之路(第八篇)Python内置函数、zip()、max()、min()

    一.python内置函数 abs() 求绝对值 例子 print(abs(-2)) all() 把序列中每一个元素做布尔运算,如果全部都是true,就返回true, 但是如果是空字符串.空列表也返回t ...

  8. Python之路(第七篇)Python作用域、匿名函数、函数式编程、map函数、filter函数、reduce函数

    一.作用域 return 可以返回任意值例子 def test1(): print("test1") def test(): print("test") ret ...

  9. 【Python之路】特别篇--Python切片

    字符串切片操作 切片操作符是序列名后跟一个方括号,方括号中有一对可选的数字,并用冒号分割. 注意: 数是可选的,而冒号是必须的. consequence[start:end:step] 切片操作符中的 ...

  10. 【Python之路】特别篇--Python内置函数

    abs() 求绝对值 i = abs(-100) print(i) # 100 all() 循环里面的参数 如果每个元素都为真,那么all返回值为真  假: 0 False None "&q ...

随机推荐

  1. php获取当月天数及当月第一天及最后一天

    1.获取上个月第一天及最后一天.   echo date('Y-m-01', strtotime('-1 month'));   echo "<br/>";   ech ...

  2. InnoDB表空间、段、区

    1. 表空间是InnoDB存储引擎逻辑结构的最高层,所有的数据都存放在表空间中.默认,InnoDB存储引擎只有一个表空间ibdata1,即所有数据都存放在这个表空间内.如果用户启用了参数innodb_ ...

  3. vuex的学习例子

    最近在学习vuejs,一直有听说vuex,用来实现多组件共享的一种状态管理模式,但是网上都说,不要为了用vuex而用vuex,大概意思就是尽量少用vuex,一些小项目可以用bus来实现组件之间的传值问 ...

  4. !important 的绝对控制样式

    <head> <style type="text/css"> div{background-color: blue !important;} </st ...

  5. python 转换代码格式

    import os dirname="C:\\Users\\haier\\Desktop\\new" def walk(path): for item in os.listdir( ...

  6. laravel在控制器中动态创建数据表

    Schema::connection('usertable')->create('test', function ($table) { $table->increments('id'); ...

  7. 微信公众号 access_token 没有过期 却失效

    最近在开发微信项目的时候 access_token   缓存到 redis里面的,明明在两个小时的有效期内  微信却提示 "errcode":40001,"errmsg& ...

  8. JS-封装类或对象的最佳方案

    JS封装类或对象的最佳方案 面向对象强大的优点之一是能够创建自己专用的类或者对象,封装一组属性和行为.抛开性能来说,JS要比面向对象语言如JAVA要灵活好用的多,组装数据结构很灵活方便.那么我们如何来 ...

  9. windows下的pycharm配置 linux环境

    由于最近学习python的需要,为了方便程序的调试,尝试在Windows下的Pycharm远程连接到虚拟机中Centos下的python环境.(这里我采用的是ssh的远程连接)1.准备工作: 固定ce ...

  10. 【原创】<笔试题> 深圳市天软科技开发有限公司

    时间:2018.03.03  上午 1.编写函数,实现字符串比较功能. 参考:http://blog.csdn.net/liubinzi123/article/details/8271683 /* * ...