Python字符串:基础要点与实践应用

本文详细介绍了Python字符串的创建、访问、转义字符、运算符、格式化以及内建函数,包括与C语言字符串的比较,展示了Python在处理文本数据方面的强大和便利性。
摘要由CSDN通过智能技术生成


一、Python字符串

1.介绍

Python字符串是一种数据类型,用于存储和操作文本数据。它可以包含任意字符,如字母、数字、符号和空格。在Python中,字符串是不可变的,意味着一旦创建,就不能更改其内容。

2.与C语言字符串比较

2.1 相同点

  1. 字符串都是以字符序列的形式存储文本数据。
  2. 都支持基本的字符串操作,如拼接、截取、比较等。
  3. 都可以使用索引和切片操作访问字符串的特定字符或子字符串。

2.2 不同点

  1. C语言中的字符串是以字符数组的形式表示,以null字符(‘\0’)作为字符串的结束标志。而Python中的字符串没有长度限制,并且不需要特殊字符来表示结尾。
  2. 在C语言中,字符串的长度需要手动计算或使用库函数来获取,而Python中可以使用len()函数直接获得字符串的长度。
  3. Python字符串是不可变的,即不能通过索引或切片修改字符串的字符。而C语言中的字符串是可变的,可以直接修改字符串的内容。
  4. Python提供了丰富的字符串处理方法和内置函数,如字符串拼接、分割、查找、替换等,使字符串的操作更加便捷。C语言中的字符串操作相对较为繁琐,需要手动编写相应的代码来完成。

3.创建Python字符串

在Python中,字符串可以通过单引号、双引号或三引号来创建。

3.1 使用单引号

str1 = 'hello world'
print(str1)  # 输出:hello world

3.2 使用双引号

str2 = "Python is awesome"
print(str2)  # 输出:Python is awesome

3.3 使用三引号

str3 = '''hello world
python'''
print(str3)
# 输出:
# hello world
# python
# 注意,使用三引号创建的字符串可以跨越多行,打印时会保留原始的换行符。

无论使用哪种方式创建字符串,一旦创建后就不能更改其内容。例如:

str1 = 'hello world'
str1[0] = 'H'   # 会报错,因为字符串是不可变的

如果需要修改字符串中的某个字符,可以通过创建一个新的字符串并赋值给原始字符串变量来实现。

str1 = 'hello world'
str1 = 'Hello'   # 创建一个新的字符串并赋值给str1
print(str1)  # 输出:Hello 

如果两个字符串完全一样,可以写成这样:

str1 = 'hello'
str2 = str1  # 将str2赋值给str1
print(str2)  # 输出:hello

二、访问字符串中的值

1.索引方式

在 Python 中,可以通过使用下标(索引)来访问字符串中的值。字符串中的每个字符都有一个对应的下标,从 0 开始递增。

str = 'hello'
print(str[0])  # 输出:h
print(str[1])  # 输出:e
print(str[2])  # 输出:l
print(str[3])  # 输出:l
print(str[4])  # 输出:o

需要注意的是,Python 中的字符串是不可变的,因此不能直接通过下标来修改字符串中的字符。如果尝试这样做,会导致 TypeError 错误。

2.截取方式

与下标索引不同的是,切片允许你访问字符串中的多个字符。你可以指定一个起始下标和一个终止下标,然后 Python 将返回该范围内的所有字符。

str = 'hello'
print(str[1:4])  # 输出:ell

在这个示例中,我们使用切片 [1:4] 访问字符串 str 中的一部分。这将返回从下标 1 到下标 3 (不包括 4)之间的所有字符。

需要注意的是,切片操作也不会修改原始字符串,而是返回一个新的字符串。因此,Python 的字符串仍然是不可变的。

三、Python 转义字符

转义字符是由反斜杠 \ 后面跟着一个特定字符组成的。

1.续行符(在行尾时)

# 续行符
print("xiao \
 bu \
 ding") # 输出xiao  bu  ding

2.反斜杠符号\

# 反斜杠
print('C:\\path\\to\\file') # 输出C:\path\to\file

3.单引号’

# 单引号
print('He said, "Hello!"') # 输出He said, "Hello!"

4.双引号"

# 双引号
print("She's happy.") # 输出She's happy.

5.响铃\a

当你在字符串中使用 \a,它会触发系统发出一个声音或者其他与响铃相关的行为。

但是需要注意的是,不是所有的终端或操作系统都会对 \a 响铃字符做出声音或其他反应。有些终端会忽略它,而有些终端可能会发出嘀嗒声、闪烁光标或其他形式的提示。

# 响铃
print('Hello \a World')

6.退格\b

# 退格
print("Hello \b World!") # 输出Hello  World!

7.空\000

# 空
print("\000")

8.换行\n

# 换行符
print('Hello\nWorld')
# Hello
# World

9.纵向制表符\v

纵向制表符 \v 用于在文本中创建垂直制表位,可以使后续文本在输出时垂直对齐。然而,大多数终端对纵向制表符的显示效果可能与预期不符,可能会被忽略或以其他方式处理。

# 纵向制表符
print('Hello\vWorld')  # 可能无法正常显示纵向制表符

10.横向制表符\t

横向制表符 \t 用于在文本中创建水平制表位,可以将后续文本对齐到下一个制表符位置。在终端上,横向制表符通常会将光标移动到下一个制表符位置,以实现对齐效果。

# 横向制表符
print('Name\tAge') # 输出Name	Age

11.回车\r

# 回车
print("Hello\rWorld!") # 输出World!

使用 \r 实现百分比进度

import time

for i in range(21):
    print("\r{:3}%".format(i),end=' ')
    time.sleep(0.05)

在这里插入图片描述

12.换页\f

\f 是一个转义字符,表示换页符。它在输出中会产生特殊效果,将光标移动到下一页或下一页面的开头位置。

然而,在大多数终端和文本编辑器中,默认情况下,换页符 \f 的效果可能不明显或不可见。因此,print(“Hello \f World!”) 在大多数情况下会与 print(“Hello World!”) 产生相同的输出结果。

# 换页
print("Hello \f World!") # 输出Hello  World!

13.八进制数\yyy

八进制数,y 代表 0~7 的字符,例如:\012 代表换行。

# 八进制数
print("\110\145\154\154\157\40\127\157\162\154\144\41") # 输出Hello World!

14.十六进制数\xyy

十六进制数,以 \x 开头,y 代表的字符,例如:\x0a 代表换行

# 十六进制数
print("\x48\x65\x6c\x6c\x6f\x20\x57\x6f\x72\x6c\x64\x21") # 输出Hello World!

四、Python字符串运算符

1.字符串连接+

a = "Hello"
b = "World"

print("a + b 输出结果:", a + b) # a + b 输出结果: HelloWorld

2.重复输出字符串*

a = "Hello"
b = "World"

print("a * 2 输出结果:", a * 2) # a * 2 输出结果: HelloHello

3.通过索引获取字符串中字符

a = "Hello"

print("a[1] 输出结果:", a[1]) # a[1] 输出结果: e

4.截取字符串

截取字符串中的一部分,遵循左闭右开原则,a[1:4] 是不包含第 4 个字符的。

a = "Hello"
b = "World"

print("a[1:4] 输出结果:", a[1:4]) # a[1:4] 输出结果: ell

5.成员运算符

in成员运算符 - 如果字符串中包含给定的字符返回 True
not in成员运算符 - 如果字符串中不包含给定的字符返回 True

a = "Hello"

if( "H" in a) :
    print("H 在变量 a 中")
else :
    print("H 不在变量 a 中")
 
if( "M" not in a) :
    print("M 不在变量 a 中")
else :
    print("M 在变量 a 中")

在这里插入图片描述

6.原始字符串

在 Python 中,前缀为 r 或 R 的字符串表示原始字符串,不会对反斜杠进行转义处理。因此,print( r’\n’ ) 和 print( R’\n’ ) 的输出结果都将是 \n,而不会被解释为换行符。

print( r'\n' )  # 输出 \n
print( R'\n' )  # 输出 \n

五、Python 字符串格式化

1.字符串格式化符号

Python 支持格式化字符串的输出 。尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符 %s 的字符串中。

在 Python 中,字符串格式化使用与 C 中 sprintf 函数一样的语法。

name = "Alice"
age = 25
print("My name is %s and I am %d years old." % (name, age)) # My name is Alice and I am 25 years old.

剩下的就不一一列举了,有兴趣的研究下。

符号描述
%c格式化字符及其ASCII码
%s格式化字符串
%d格式化整数
%u格式化无符号整型
%o格式化无符号八进制数
%x格式化无符号十六进制数
%X格式化无符号十六进制数(大写)
%f格式化浮点数字,可指定小数点后的精度
%e用科学计数法格式化浮点数
%E作用同%e,用科学计数法格式化浮点数
%g%f和%e的简写
%G%f 和 %E 的简写
%p用十六进制数格式化变量的地址

2.格式化操作符辅助指令

符合功能
*定义宽度或者小数点精度
-用作左对齐
+在正数前面显示加号
在正数前面显示空格
#在八进制前面显示零(‘0’),在十六进制前面显示’0x’或者’0X’
0显示的数字前面填充’0’而不是默认的空格
%‘%%‘输出一个单一的’%’
(var)映射变量(字典参数)
m.n.m是显示的最小总宽度,n是小数点后的位数(如果可用的话)

这里举一个实例来说明*的作用:

当使用*符号作为格式化操作符的辅助指令时,它可以用来动态定义宽度或者小数点精度。这意味着你可以在运行时指定宽度或者小数点精度的数值。

width = 10
precision = 4
value = 123.456789
print("The value is: %*.*f" % (width, precision, value))
# 输出:The value is:   123.4568

在这个示例中,%*.f中的两个分别代表宽度和小数点精度。在字符串之后的%后面,我们使用元组(width, precision, value)来动态传入宽度和小数点精度的值。因此,width的值被用来定义输出的宽度,precision的值被用来定义小数点后的位数。

3.f-string 格式化字符串

f-string 是 python3.6 之后版本添加的,f-string是一种字符串格式化的方式,可以在字符串中嵌入变量、表达式和函数的值。

f-string使用的语法是在字符串前面加上字母"f"或"F",然后用花括号{}包裹要插入的变量、表达式或函数的值。

3.1 插入变量

在下面的示例中,我们使用f-string将name和age的值插入到字符串中。

name = "Alice"
age = 25
print(f"My name is {name} and I am {age} years old.")
# 输出:My name is Alice and I am 25 years old.

3.2 插入表达式

在下面的示例中,我们使用f-string将表达式num1 + num2的结果插入到字符串中。

num1 = 10
num2 = 5
print(f"The sum of {num1} and {num2} is {num1 + num2}.")
# 输出:The sum of 10 and 5 is 15.

3.3 调用函数

在下面的示例中,我们使用f-string将函数double的返回值插入到字符串中。

def double(x):
    return 2 * x

num = 5
print(f"Double of {num} is {double(num)}.")
# 输出:Double of 5 is 10.

3.4 格式化数字

在下面的示例中,我们使用f-string将格式化后的total值插入到字符串中,保留两位小数并加上美元符号。

price = 3.99
quantity = 2
total = price * quantity
print(f"The total is ${total:.2f}.")
# 输出:The total is $7.98.

六、Python 的字符串内建函数

在 Python 3.10 版本中,一共有 40 个字符串内建函数,这里选几个常用的进行介绍。

1.len(string)

获取字符串的长度。

string = "Hello, world!"
print(len(string))
# 输出:13

2.str()

将其他类型的变量转换为字符串类型。

num = 123
string = str(num)
print(string)
# 输出:"123"

3.lower()

将字符串中所有的大写字母转换为小写字母

string = "HeLLo, WoRLd!"
print(string.lower())
# 输出:"hello, world!"

4.upper()

将字符串中所有的小写字母转换为大写字母。

string = "HeLLo, WoRLd!"
print(string.upper())
# 输出:"HELLO, WORLD!"

5.strip()

去除字符串开头和结尾的空格或指定字符。

string = "###Hello, world!###"
print(string.strip("#"))
# 输出:"Hello, world!"

6.replace()

替换字符串中的某个子串。

string = "Hello, world!"
print(string.replace("world", "Python"))
# 输出:"Hello, Python!"

7.split():

将字符串按一个分隔符分割成多个子串,并返回一个列表。

string = "Hello, world!"
print(string.split(", "))
# 输出:["Hello", "world!"]

8.join()

将多个字符串连接成一个字符串。

list = ["Hello", "world!"]
print(", ".join(list))
# 输出:"Hello, world!"

9.startswith()

判断字符串是否以某个子串开头。

string = "Hello, world!"
print(string.startswith("Hello"))
# 输出:True

10.endswith()

判断字符串是否以某个子串结尾。

string = "Hello, world!"
print(string.endswith("world!"))
# 输出:True

需要注意的是,Python字符串内建函数的返回值通常是一个新的字符串对象,原字符串不会被修改。如果需要修改字符串本身,可以使用字符串的赋值操作或者其他相关操作。


七、总结

今天主要讲了Python的字符串的相关内容。

感谢你的观看,谢谢!

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaobuding_QAQ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值