python中的字符串

字符串基本特点

字符串的本质是字符序列。python中的字符串是不可变的,无法对原字符串做任何修改(不能用下标赋值的方式去改变字符串)。但是可以将字符串的一部分赋值创建新的字符串,达到“看起来修改”的效果。

a = "4541"

a[1] = "8"

# 程序报错:TypeError: 'str' object does not support item assignment

注:python不支持单字符类型,单字符也是作为一个字符串使用的。

字符串的编码

python3支持Unicode,Unicode可以表示世界上任何书面语言的字符。python3的字符默认就是16位Unicode编码,ASCII码是Unicode编码的子集。

注:1. ASCII 码使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符。占用0 - 127用来表示大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母A的编码是65,小写字母z的编码是122。

2. Unicode通常用两个字节表示一个字符,原有的英文编码从单字节变成双字节,只需要把高字节全部填为0就可以。

3. 使用内置函数 ord() 可以把字符转换成对应的Unicode码;

4. 使用内置函数 chr() 可以把十进制数字转换成对应的字符。

ord("A") # 65

chr(66) # “B"

字符串的创建

用单/双引号创建字符串

空字符串和 len() 函数

python允许空字符串的存在,不包含任何字符且长度为0;

len() 函数用来计算字符串含有多少个字符(空格、\n、\t 也算一个字符)

c = ""

len(c) # 0

转义字符

转义字符

描述

\

续行符

\\

反斜杠符号

\‘

单引号

\"

双引号

\b

退格

\n

换行

\t

横向制表符

\r

回车

字符串常见操作

字符串拼接

可以使用 “+” 将多个字符串拼接起来。

注:

对于 “+” 运算符:

(1)+ 两边都是字符串,则字符串拼接;

(2)+ 两边都是数字,则进行加法运算;

(3)+ 两边类型不同,则抛出异常。

a = "a"

print(id(a)) # 2008317966448

a = a + "b"

print(id(a)) # 2008318085168

字符串复制

使用 "*"可以实现字符串复制,如

a = "hello" * 3

print(a) # hellohellohello

不换行打印

调用 print() 时,会自动打印一个换行符。当我们不想换行时,可以通过参数 end = "任意字符串”,实现末尾添加任何内容:

print("hello", end = " ") # 空格

print("hello", end = "#") # hello hello#

从控制台读取字符串

使用 input() 从控制台读取键盘输入的内容,返回字符串类型:

user_name = input("请输入用户名:")

# 从键盘输入的字符串返回给 user_name

其他类型数据转换成字符串

使用 str() 函数可以将其他类型转换为字符串类型。

数字类型转换为字符串:

a = str(5.21)

print(type(a)) #

Bool型转换为字符串:

a = str(True)

使用 [] 提取字符

字符串的本质是字符序列,可以通过在字符串后面添加 [] ,在 [] 里指定偏移量,可以提取该位置的单个字符。

正向搜索:最左侧第一个字符,偏移量是0;

反向搜索:最右侧一个字符,偏移量是-1。

a = "hello"

print(a[1]) # e

print(a[-2]) # l

replace() 替换字符串

字符串不可改变,不可通过下标赋值的方式去改变字符串,但是,有时确实需要替换某些字符,这时,只能通过用 replace() 创建新的字符串去实现。

a = "hello"

a.replace("e", "h") # hhllo

a.replace("l", "y") # hhyyo

注意:整个过程中,实际上是创建了新的字符串变量,并指向了变量a,而不是修改了以前的字符串(可用 id() 函数来验证)。、

字符串切片

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

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

注:包头不包尾

操作

说明

[:]

提取全部字符串

[start:]

从start到结尾

[:end]

从0开始,到 end-1

[start:end]

从 start 到 end-1(包头不包尾)

[-3:]

倒数三个

[-8 : -3]

倒数第八个到倒数第四个(包头不包尾)

[::-1]

步长为负,从右向左反向提取

注意:切片操作时,起始偏移量不在[0,字符串长度-1]这个范围内也不会报错。起始偏移量小于0会被当做0,终止偏移量大于长度-1,会被当做长度-1.

split() 分割和 join() 合并

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

a = "to be or not to be"

print(a.split()) # ['to', 'be', 'or', 'not', 'to', 'be']

print(a.split("be")) # ['to ', ' or not to ', '']

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

a = ["to","be","or","not","to","be"]

print("*".join(a)) # to*be*or*not*to*be

拼接字符串要点:使用+拼接字符串,会生成新的字符串对象,因此不推荐;而使用join函数,会在拼接字符串之前计算所有字符串长度,然后逐一拷贝,仅新建一次对象。(在循环结构中循环拼接字符串 join() 占优势,因为列表可变,字符串不可变)

字符串驻留机制和字符串比较

字符串驻留:仅保存一份相同且不可变字符串的方法,不同的值被存放在字符串驻留池中。python支持字符串驻留机制,对于符合标识符规则的字符串(仅包含下滑下面、字母和数字)会启用字符串驻留机制。(即相同的字符串只保留一份拷贝,后续创建相同字符串时,不会开辟新空间,而是把该字符串的地址赋给新创建的变量)

a = "abc_11"

b = "abc_11"

print(a is b) # True

c = "aa#"

d = "aa#"

print(c is d) # 命令行执行结果为False,pycharm执行结果为True

字符串比较和同一性:

=和!=比较的是字符串的内容;

is/is not 判断两个对象是否引用同一个对象(比较的是地址)

成员操作符

in / not in 关键字,判断某个字符(子字符串)是否存在于字符串中。

字符串常用查找方法

方法

说明

len(a)

字符串长度

a.startswith(“hello”)

以指定字符串开头(返回布尔型)

a.endswith(“world”)

以指定字符串结尾(返回布尔型)

a.find("我“)

第一次出现指定字符串的位置

a.rfind("我”)

最后一次出现指定字符串的位置

a.count("我“)

指定字符串出现了几次

a.isalnum()

所有字符全是字母或数字

去除首尾信息

可以通过 strip() 去除字符串首尾指定信息,通过 lstrip() 去除字符串左边指定信息,通过 rstrip() 去除字符串右边指定信息。

”*s*i*x*".strip("*") # s*i*x

大小写转换

a = "i love you"

示例

说明

a.capitalize()

产生新的字符串,首字母大写

a.title()

产生新的字符串,每个单词都首字母大写

a.upper()

产生新的字符串,所有字符全转成大写

a.lower()

产生新的字符串,所有字符全转成小写

a.swapcase()

产生新的字符串,所有字母大小写互换

格式排版

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

a = "six"

a = a.center(10,"*")

print(a) # ***six****

其他方法

isalnum() : 是否为字母或数字

isalpha() : 是否只由字母组成(含汉字)

isdigit() : 是否只由数字组成

isspace() : 是否为空白符(空格、\n等)

isupper(): 是否为大写字母

islower(): 是否为小写字母

字符串的格式化

用 str.format() 函数可以实现字符串的格式化。基本语法是通过 {} 和 : 来代替以前的 %。

format() 函数可以接受的参数个数不限,位置也可不按顺序:

a = "名字是:{0},年龄是{1}"

print(a.format("小明", 11)) # 名字是:小明,年龄是11

b = "名字是{0},年龄是{1},{0}学习不错”

print(b.format("小明”,11)) # 名字是小明,年龄是11,小明学习不错

c = "名字是{name},年龄是{age}"

print(c.format(age = 11, name = "小明")) # 名字是小明,年龄是11

填充与对齐

填充与对齐常常一起使用。

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

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

print("我是{0},有{1:*^8}万存款".format("xiaoming","666"))

# 我是xiaoming,有**666***万存款

数字格式化

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

a = "我是{0},我的存款有{1:.2f}"

print(a.format("xiaoming", 4512.45896))

# 我是xiaoming,我的存款有4512.46

格式

描述

{:.2f}

保留小数点后两位(四舍五入)

{:.0f}

不带小数

{:.2%}

百分比格式(保留两位小数)

可变字符串

python中字符串属于不可变对象,不支持原地修改,若要修改其中的值,只能创建新的字符串对象。但确实需要原地修改字符串时,可以使用io.StringIO() 对象(生成一个新的可修改的字符串对象)或者 array 模块。

import io

s = "hello"

sio = io.StringIO(s)

print(type(sio)) #

print(sio.getvalue()) # hello

sio.seek(2) # 移动到此处

sio.write("k")

print(sio.getvalue()) # heklo

本文地址:https://blog.csdn.net/weixin_43543210/article/details/107477121

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

python语言中内置的字符串排版方法_python基础知识(python内置数据类型-字符串)...相关推荐

  1. 列举5个python内置函数和使用方法_Python基础-----函数、内置函数、递归等练习

    !/usr/bin/env python -*- coding:utf-8 -*- ########################################################## ...

  2. python语言编写一个生成九宫格图片的代码_python基础教程python简单实现9宫格图片实例...

    在日常生活中我们经常在朋友圈看到有人发九宫格图片,其实质就是将一张图片切成九份,然后在微信中一起发这九张图. 那么我们如何自己动手实现呢? 说到切图Python 就可以实现,主要用到的 Python ...

  3. python语言中不属于组合数据类型的是_python的基本语法(组合数据类型),基础...

    python的基础语法(组合数据类型) 一,list列表 python 语言中使用组合数据类型进行操作, 最常见的组合数据类型之一~就是 list 列表. 1 什么是列表? 列表是 组合数据类型 中的 ...

  4. 列举至少五个python内置函数和使用方法_Python内置函数 next的具体使用方法 Python中seek和next区别...

    python列表本来没有next方法,为什么用iter函数生...对list用__dir__()发现没有next方法,但是用iter()生成迭代器,对该迭代next是进行迭代的方法,只有迭代器和生成器 ...

  5. 列举5个python内置函数和使用方法_python内置函数是什么

    python内置函数如下表 用法及说明 1.abs(),返回数字的绝对值. 2.all(),如果集合中所有元素是true或集合为空集合,返回True. 3.any(),如果集合中有一项元素是true, ...

  6. 在python语言中可作为源文件后缀名的是_在Python语言中,可以作为源文件后缀名的是( )_学小易找答案...

    [多选题]在2013清单计价中,其他项目界面,包括( ) [多选题]在分部分项工程清单下,添加一项定额的方法有( ) [单选题]下列各项中,关于企业无法查明原因的现金溢余,经批准后应贷记的会计科目是( ...

  7. 在python语言中定义私有成员变量的方法是_Python在类中有“私有”变量吗?

    回答(11) 2 years ago python中的私有变量或多或少是一个hack:解释器故意重命名变量 . class A: def __init__(self): self.__var = 12 ...

  8. python实验中遇到的问题及解决方法_Python中遇到的小问题及解决方法汇总

    本文会把学习过程中遇到的一些小问题和解决办法放在这里,以便于大家能够更好地学习python. 一.Python的异常处理 因为想到自己不断尝试写小程序的话会用到抛出异常信息来判断哪里出现了问题: us ...

  9. python中try语句的用法和作用_python基础知识三——try与except处理异常语句

    try/except介绍 与其他语言相同,在python中,try/except语句主要是用于处理程序正常执行过程中出现的一些异常情况,如语法错(python作为脚本语言没有编译的环节,在执行过程中对 ...

最新文章

  1. 微信AI从识物到通用图像搜索的探索揭秘
  2. 全景图像拼接——图像融合
  3. js 获取指定范围的随机数
  4. GTF - Great Teacher Friedman
  5. jQuery入门视频教程
  6. 航空订票系统php,C++版数据结构航空订票系统源代码.doc
  7. WordPress网站配置腾讯云cdn缓存
  8. 利用Powergui进行FFT Analysis,信号源为空解决方法
  9. win8连接wifi成功但受限制_用于 手机热点或WIFI网络的IM143DTU使用手册
  10. 爬取斗鱼主播名字和热度
  11. 实现文件及文件批量改名的工具(包含未确定盘符的情况下)
  12. 凹凸技术揭秘 · Tide 研发平台 · 布局研发新基建
  13. 树莓派3B+安装ubuntu16.04与ROS
  14. EventLoop(回顾)
  15. VM中centos中设置共享文件夹
  16. 两列布局(3种解决方案)
  17. 隐藏安卓平板状态栏,还你全面屏体验
  18. 【转需】【金融干货】四步教你:开发风控模型?
  19. 【ShapeWorks】2. 工作流的三板斧 - How to Groom Your Dataset?
  20. 传感技术复习笔记(7)——压电式传感器

热门文章

  1. 156 - ZOJ Monthly, January 2019 - A
  2. testtesttesttesttesttesttesttest
  3. 国内这么多“ChatGPT”是真是假
  4. Vue---实现搜索功能的搜索关键词高亮显示
  5. 驱动器D中的磁盘未被格式化
  6. Quartz教程 第10课 配置、资源利用率和SchedulerFactory
  7. 动态规划子序列系列力扣题目
  8. 【STM32CubeMX学习】SPI读写W25Q16
  9. 【Others】英语日期的正确表达
  10. 7 foundation plates(葫芦娃7兄弟)