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

本文详细介绍了Python字符串的基本特性和操作,包括不可变性、Unicode编码、创建与修改、拼接、复制、转义字符、字符串方法如replace()、split()和join(),以及字符串格式化。此外,还讲解了字符串的比较、成员操作符以及字符串的填充与对齐等。通过实例展示了如何在Python中有效地处理和操作字符串。
摘要由CSDN通过智能技术生成

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值