一:字符串

很多人初学编程时,总是担心自己数学不行,潜意识里认为数学好才能编程。实际上,大多数程序员打交道最多的是“字符串”而不是“数字”。因为,编程是用来解决现实问题的,因此逻辑思维的重要性远远超过数学能力。

字符串的本质是:字符序列。Python的字符串是不可变的,我们无法对原字符串做任何修改。但可以将字符串的一部分复制到新创建的字符串,以达到“看起来修改”的效果。

1.1 字符串的编码

Python3直接支持Unicode,可以表示世界上任何书面语言的字符。Python3的字符默认就是16位Unicode编码,ASCII码是Unicode编码的子集(ASCII码只能表示英文与数字,一个字节,每个字节8位)。

使用内置函数==ord()

可以把字符转换成对应的Unicode码

使用内置函数

chr()==可以把十进制数字转换成对应的字符

print(ord('A'))# 65

print(ord('高'))# 39640

print(chr(65))# A

print(chr(39640))# 高

1.2 创建字符串

a = "I teach Chinese KongFu"

b = 'who are you?'

# 创建多行字符串

c = '''name="Bruce Lee"

company="sxt"

age = 32

lover = KongFu

'''

print(c)

多行字符串输出结果:

name="Bruce Lee"

company="sxt"

age = 32

lover = KongFu

1.3 字符串长度

使用len()函数计算字符串的长度

a = ''# Python允许空字符串的存在

b = 'Bruce Lee 李小龙'

print(len(a))# 0

print(len(b))# 13 (包含空格,因为使用的是Unicode编码所以一个中文汉字就是一个字符)

1.4 replace()实现字符串替换

字符串是“不可改变的”,我们通过[]可以获取字符串指定位置的字符,但是我们不能改变字符串,当尝试改变字符串中某个字符,会报错:

a = 'see you again'

a[2] = 'a'

print(a)

报错信息如下:

TypeError: 'str' object does not support item assignment

当需要改变某些字符时,就可以使用replace()

a = 'see you again'

b = a.replace('s', 'l')

print(a)# see you again

print(b)# lee you again

整个过程中,实际上我们是创建了新的字符串对象,并赋值给了变量b,而变量a则无变化

1.5 slice切片

切片slice操作可以让我们快速的提取字符串,标准格式为:

[起始偏移量 start: 终止偏移量 end: 步长 step]

典型操作(三个量为正数)的情况:

其他操作(三个量为负数)的情况:

1.6 split()分割

split()可以基于指定分隔符将字符串分隔成多个子字符串(存储到列表中)。如果不指定分隔符,则默认使用空白字符(换行符/空格/制表符)。

a = 'to be or not to be'

b = a.split()

print(b)# ['to', 'be', 'or', 'not', 'to', 'be']

指定分隔符进行分隔

a = 'to be or not to be'

b = a.split('be')

print(b)# ['to ', ' or not to ', '']

1.7 join()合并

join()的作用与split()作用刚好相反,用于将一系列子字符串连接起来。

a = ['sxt', 'sxt100', 'sxt200']

b = '*'.join(a)# 指定使用*号将列表中的元素连接起来(也可以不指定,为空)

print(b)# sxt*sxt100*sxt200

使用字符串拼接符+,会生成新的字符串对象,因此不推荐使用+号来进行拼接字符串操作。

推荐使用join函数,因为join函数在拼接字符串之前会计算所有字符串的长度,然后逐一拷贝,仅新建一次对象。

1.8 字符串驻留机制

字符串驻留:仅保存一份相同且不可变字符串的方法,不同的值被存放在字符串驻留池中。

Python支持字符串驻留机制,对于符合标识符规则的字符串(仅包含下划线 _、字母和数字)会启用字符串驻留机制。

a = 'abd_33'

b = 'abd_33'

print(a is b)# True (变量a和b都指向同一块内存地址)

# 下面使用的python版本为3.7.4,带特殊字符#号,也是符合标识符规则的字符串;早期版本下面为False,内存地址也不一样

c = 'dd#'

d = 'dd#'

print(c is d)# True (is 比较的是内存地址)

print(c == d)# True(== 比较的是value)

print(id(c))# 1922673958320

print(id(d))# 1922673958320

1.9 格式排版

center(), ljust(), rjust()这三个函数用于对字符串实现排版

a = 'tom'

print(a.center(10, '*'))# ***tom****

print(a.center(10))# tom

print(a.ljust(10, '*'))# tom*******

1.10 字符串格式化

Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。

基本语法是通过 {} 和 : 来代替以前的 % 。

format 函数可以接受不限个参数,位置可以不按顺序。

a = 'name is : {0}, age is : {1}'.format('Bruce Lee', 32)

b = 'name is : {}, age is : {}'.format('Jet Lee', 37)

c = 'name is: {0}, age is : {1}, {0} is a good guy'.format('Rambo', 22)

d = 'name is {name}, age is {age}'.format(name = 'Jacky', age = 33)

print(a)

print(b)

print(c)

print(d)

1.11 填充与对齐

填充常跟对齐一起使用

^、分别是居中、左对齐、右对齐,后面带宽度

:号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充

a = "{:*>8}".format('234')

print(a)# *****234

b = 'I am {0}, I love number {1:*^8}'.format('Bruce Lee', '666')

print(b)# I am Bruce Lee, I love number **666***

1.12 数字格式化

浮点数通过 f,整数通过 d 进行需要的格式化。

a = "我是{0},我的存款有{1:.2f}".format('Bruce Lee', 3888.234234)

b = "我是{0},我的存款有{1:d}".format('Bruce Lee', 3888)

print(a)# 我是Bruce Lee,我的存款有3888.23

print(b)# 我是Bruce Lee,我的存款有3888

其他格式,供大家参考:

数字

格式

输出

描述

3.1415926

{:.2f}

3.14

保留小数点后两位

3.1415926

{:+.2f}

3.14

带符号保留小数点后两位

2.71828

{:.0f}

3

不带小数

5

{:.0>2d}

05

数字补零 (填充左边, 宽度为 2)

5

{:x<4d}

5xxx

数字补 x (填充右边, 宽度为 4)

10

{:x<4d}

10xx

数字补 x (填充右边, 宽度为 4)

1000000

{:,}

1,000,000

以逗号分隔的数字格式

0.25

{:.2%}

25.00%

百分比格式

1000000000

{:.2e}

1.00E+09

指数记法

13

{:10d}

13

右对齐 (默认, 宽度为 10)

13

{:<10d}

13

左对齐 (宽度为 10)

13

{:^10d}

13

中间对齐 (宽度为 10)

1.13 可变字符串

在 Python 中,字符串属于不可变对象,不支持原地修改,如果需要修改其中的值,智能创建新的字符串对象。但是,经常我们确实需要原地修改字符串,可以使用 io.StringIO对象或 array 模块。

import io

s = 'hello, man'

sio = io.StringIO(s)

print(sio)

print(sio.getvalue())

print(sio.seek(7))# 将指针移动到索引7位置

print(sio.write('g'))# 将索引为7的字符修改为g

print(sio.getvalue())# hello, gan

1.14 其他常用方法

a = '''It's been a long day without you my friend,And I'll tell you all about it when I see you again,We've come a long way from where we began,Oh I'll tell you all about it when I see you again'''

print(len(a))# 计算字符串长度

print(a.startswith('I'))# 是否以什么开头

print(a.endswith('n'))# 是否以什么结尾

print(a.find('long'))# 从左边开始查找long第一次出现的位置

print(a.rfind('you'))# 从右边开始查找you第一次出现的位置

print(a.count('see'))# 统计字符串中see出现的次数

print(a.isalnum())# 是否全部为数字或字母

print(a.capitalize())# 将首字母大写

print(a.title())# 将每个单词的首字母大写

print(a.upper())# 全部转化为大写字母

print(a.lower())# 全部转化为小写字母

print(a.swapcase())# 将字符串中的大写字母转化为小写,小写转化为大写

print(a.isalpha())# 检测字符串是否只由字母组成(含汉字)

print(a.isdigit())# 是否只由数字组成

print(a.isspace())# 是否为空白字符

print(a.isupper())

print(a.islower())

python基本字符_Python基本字符串,基础,之相关推荐

  1. python判断字符_Python判断字符串是否为字母或者数字(浮点数)

    str为字符串s为字符串 str.isalnum() 所有字符都是数字或者字母 str.isalpha() 所有字符都是字母 str.isdigit() 所有字符都是数字 str.isspace() ...

  2. python格式化字符_Python格式化字符串

    一.通过%来格式化输出. 格式化字符串时,Python使用一个字符串作为模板.模板中有格式符,这些格式符为真实值预留位置,并说明真实数值应该呈现的格式.Python用一个tuple将多个值传递给模板, ...

  3. python判断字符_python判断字符串是字母 数字 大小写(转载)

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 今天遇到的字符串处理的问题,记录一下方便使用 str1 = input('请输入一个字符:') #初始化字符.数字.空格.特殊字符的计数 lowercas ...

  4. python中替换字符串中字符_python替换字符串中的某个字符

    python_split_strip_replace使用方法 使用python时会经常要对字符串做一些处理,比如:分割字符串.去掉空格.替换字符串 中的某个字符等,下面介绍下这几个功能的使用. 一.  ...

  5. python清洗文本非法字符_Python 文本字符串清理

    文本字符串清理 由于收集来源的问题(比如,表单文本数据录入错误,甚至于有意录入错误的数据),文本字符串往往需要先进行清理才能够在后续的需求中发挥正常且正确的作用. 删除字符串中多余的字符 在文本字符串 ...

  6. python 循环赋值_Python打牢基础,从19个语法开始!

    Python简单易学,但又博大精深.许多人号称精通Python,却不会写Pythonic的代码,对很多常用包的使用也并不熟悉.学海无涯,我们先来了解一些Python中最基本的内容. Python的特点 ...

  7. python格式字符_python格式字符

    用python实现接口测试(八.实现序列化与反序列化) 前言 在python中,序列化可以理解为:把python的对象编码转换为json格式的字符串,反序列化可以理解为:把json格式字符串解码为py ...

  8. python中文字符_python处理中文字符

    1.在py文件中使用中文字符 unicode.py文件内容如下所示: # -*- coding:utf-8 -*- str_ch = '我们women' uni_ch = u'我们women' pri ...

  9. python单词反转_python文本 字符串逐字符反转以及逐单词反转

    python文本 字符串逐字符反转以及逐单词反转 场景: 字符串逐字符反转以及逐单词反转 首先来看字符串逐字符反转,由于python提供了非常有用的切片,所以只需要一句就可以搞定了 >>& ...

最新文章

  1. 量子计算机到底神在哪里说明文,“九章”量子计算机到底有多神!
  2. Oracle存储过程小解
  3. 线程互斥与同步 在c#中用mutex类实现线程的互斥_Golang 并发编程与同步原语
  4. 51nod 1040最大公约数和(欧拉函数)
  5. kafka 集群的部署安装
  6. 对 makefile 中 override 优先级的学习体会
  7. FileZilla 服务器端win server2008以上的配置
  8. 学python能赚钱吗-做直播能有多赚钱,Python告诉你
  9. iOS: 目前天气API 整理
  10. 关于Swift中的泛函数find的问题
  11. a0图框标题栏尺寸_a0图纸尺寸(a0图纸标题栏尺寸标准国标)
  12. dtcms 数据库结构分析
  13. MISC攻防世界高手进阶区7-12题
  14. 边缘的容器化 — WasmEdge 与 seL4
  15. [React Native]导航器Navigator
  16. IDEA修改项目war包名称
  17. Proftpd配置文件
  18. 代码实现微信8.0特效
  19. C语言 输入一个字符,并判断这个字符属于哪一类字符
  20. Squid ----反向代理模式

热门文章

  1. Bootatrap中的表单(2)
  2. 关于GestureDetector的onFling方法e1返回null问题
  3. VC使用编译时间作为版本号
  4. DXperience,不能不爱
  5. VB.net和c#的区别!
  6. Java开发人员必备的7大技能,每一个都必不可少
  7. 01: MySql简介
  8. 【黑客免杀攻防】读书笔记6 - PE文件知识在免杀中的应用
  9. 使用Apache配置Tomcat应用整合PHP论坛-Discuz
  10. 【大话hibernate】hibernate系统学习大合集