Python基础知识__字符串

简介: 字符串是 Python 中最常用的数据类型。我们一般使用引号来创建字符串。创建字符串很简单,只要为变量分配一个值即可。

字符串介绍


一. 认识字符串


字符串是 Python 中最常用的数据类型。我们一般使用引号来创建字符串。创建字符串很简单,只要为变量分配一个值即可。


a = 'hello world'
b = "abcdefg"
print(type(a))
print(type(b))


注意:控制台显示结果为<class 'str'>, 即数据类型为str(字符串)。


1.1 字符串特征


  • 一对引号字符串


name1 = 'Tom'
name2 = "Rose"


  • 三引号字符串


name3 = ''' Tom '''
name4 = """ Rose """
a = ''' i am Tom, 
        nice to meet you! '''
b = """ i am Rose, 
        nice to meet you! """


注意:三引号形式的字符串支持换行。


二.字符串输出


1.格式化操作符


    name = '小李'
    position = '讲师'
    address = '北京市'
    print('--------------------------------------------------')
    print("姓名:%s" % name)
    print("职位:%s" % position)
    print("公司地址:%s" % address)
    print('--------------------------------------------------')


结果:


--------------------------------------------------
    姓名: 小李
    职位: 讲师
    公司地址: 北京市
    --------------------------------------------------


2.f-strings


f-strings 提供一种简洁易读的方式, 可以在字符串中包含 Python 表达式. f-strings 以字母 'f' 或 'F' 为前缀, 格式化字符串使用一对单引号、双引号、三单引号、三双引号. 格式化字符串中


f-strings 的基本结构是这样的:


name = '小李'
age = 18
sex = '男'
msg1 = F'姓名:{name},性别:{age},年龄:{sex}'  # 大写字母也可以
msg = f'姓名:{name},性别:{age},年龄:{sex}'   # 建议小写
print(msg)


输出的结果为:


姓名:小李,性别:18,年龄:男


f-strings 就是在字符串的引号前面加上一个字母 f。字母大小写都可以,但是推荐使用小写。{} 中除了可以使用变量外,还可以放入函数:


def func(a,b):
    return a + b
msg = f"运行结果:{func(1,2)}"
print(msg)


输出的结果为:


运行结果:3


甚至可以在 {} 中放入 input 函数,让用户输入:


print(f"姓名:{input('请输入姓名:')} 年龄:{input('请输入年龄:')} 性别:{input('请输入性别:')}")


输出的结果是:


请输入姓名:alex
请输入年龄:18
请输入性别:男
姓名:alex 年龄:18 性别:男


除了字符串,{} 中也可以放入列表和字典:


lst = [1, 2, 32, 34, 45, 5]
msg = f"运行结果:{lst[0:3]}"
print(msg)
dic = {"key": 1, "key1": 22}
msg = f"运行结果:{dic['key1']}"
print(msg)


输出的结果为:


运行结果:[1, 2, 32]

运行结果:22


f-string 可以写成多行的形式,但依然打印成一行:


msg = f"窗前明月{'光'}," \
      f"玻璃好上{'霜'}。" \
      f"要不及时{'擦'}," \
      f"一会就得{'脏'}。"
print(msg)


输出的结果为:


窗前明月光,玻璃好上霜。要不及时擦,一会就得脏。


要想打印多行字符串,还是要使用三对引号:


msg = f"""
窗前明月{'光'},
玻璃好上{'霜'}.
要不及时{'擦'},
一会就得{'脏'}.
"""
print(msg)


通过使用三元运算,配合 f-strings,我们可以进一步节省代码:


a = 10
b = 20
msg = f"{a if a < b else b}"
print(msg)


同时使用两个括号表示一个可以打印的大括号:


msg = f"{{'alex': 'wusir'}}"
print(msg)


输出的结果为:


{'alex': 'wusir'}


字符串输入;


注意:input获取的数据,都以字符串的方式进行保存,即使输入的是数字,那么也是以字符串方式保存


demo:


    userName = input('请输入用户名:')
    print("用户名为:%s" % userName)
    password = input('请输入密码:')
    print("密码为:%s" % password)


结果:(根据输入的不同结果也不同)


   请输入用户名:xiaoli

   用户名为: 110

   请输入密码:123456

   密码为: 123456


下标和切片


1. 下标索引


所谓“下标”,就是编号,就好比超市中的存储柜的编号,通过这个编号就能找到相应的存储空间


字符串中"下标"的使用


列表与元组支持下标索引好理解,字符串实际上就是字符的数组,所以也支持下标索引。

如果有字符串:name = 'abcdef',在内存中的实际存储如下:


00e6c9544487495a81d2fb54feed363a.png


如果想取出部分字符,那么可以通过下标的方法,(注意python中下标从 0 开始)


    name = 'abcdef'
    print(name[0])
    print(name[1])
    print(name[2])


运行结果:


a

b

c


2. 切片


切片是指对操作的对象截取其中一部分的操作。字符串、列表、元组都支持切片操作。


切片的语法:[起始:结束:步长]


注意:选取的区间从"起始"位开始,到"结束"位的前一位结束(不包含结束位本身),步长表示选取间隔。


我们以字符串为例讲解。


如果取出一部分,则可以在中括号[]中,使用:


    name = 'abcdef'
    print(name[0:3]) # 取 下标0~2 的字符


运行结果:


1e24be45250e418bb39923c1c674b3de.png


 name = 'abcdef'
    print(name[0:5]) # 取 下标为0~4 的字符


运行结果:


e659603331584e0a83d9ed001cfe225a.png


 name = 'abcdef'
    print(name[3:5]) # 取 下标为3、4 的字符


运行结果:


fca318937ce647049214b45e038eb33d.png


    name = 'abcdef'
    print(name[2:]) # 取 下标为2开始到最后的字符


运行结果:


61d5ad018d444ac38ca50a80b2add6b7.png


    name = 'abcdef'
    print(name[1:-1]) # 取 下标为1开始 到 最后第2个  之间的字符

运行结果:


1f59e101b17d4101b377d8df7b7dc212.png


想一想


  • (面试题)给定一个字符串aStr, 请反转字符串


# 索引是通过下标取某个元素
# 切片是通过下标去某一段元素
s = 'Hello World!'
print(s[4])
print(s)
print(s[:]) # 取出所有元素(没有起始位和结束位之分),默认步长为1
print(s[1:]) # 从下标为1开始,取出 后面所有的元素(没有结束位)
print(s[:5])  # 从起始位置开始,取到 下标为5的前一个元素(不包括结束位本身)
print(s[:-1]) # 从起始位置开始,取到 倒数第一个元素(不包括结束位本身)
print(s[-4:-1]) # 从倒数第4个元素开始,取到 倒数第1个元素(不包括结束位本身)
print(s[1:5:2]) # 从下标为1开始,取到下标为5的前一个元素,步长为2(不包括结束位本身)
# python 字符串快速逆置
print(s[::-1])  # 从后向前,按步长为1进行取值


字符串常见操作


如有字符串mystr = 'hello world itcast and itcastcpp',以下是常见的操作


<1>find


检测 str 是否包含在 mystr中,如果是返回开始的索引值,否则返回-1


1.语法


字符串序列.find(子串, 开始位置下标, 结束位置下标)


1.示例


mystr.find(str, start=0, end=len(mystr))

bf488057334948b6adb873c485559b1b.png


<2>index


跟find()方法一样,只不过如果str不在 mystr中会报一个异常.


1.语法


字符串序列.index(子串, 开始位置下标, 结束位置下标)


1.示例


mystr.index(str, start=0, end=len(mystr))

0a3fd1ec49e44242aefd230c6eb164ef.png


<3>count


返回 str在start和end之间 在 mystr里面出现的次数


1.语法


字符串序列.count(子串, 开始位置下标, 结束位置下标)


1.示例


mystr.count(str, start=0, end=len(mystr))

7b622c5462c249e0819742dca4ae2c7d.png


<4>replace


把 mystr 中的 str1 替换成 str2,如果 count 指定,则替换不超过 count 次.


1.语法


字符串序列.replace(旧子串, 新子串, 替换次数)


1.示例


mystr.replace(str1, str2,  mystr.count(str1))

0fef4be6638c42ca9b6cf2e0f075de36.png


<5>split


以 str 为分隔符切片 mystr,如果 maxsplit有指定值,则仅分隔 maxsplit 个子字符串


1.语法


字符串序列.split(分割字符, num)


1.示例


mystr.split(str=" ", 2)

9c065771380f475ea90045debc088ab2.png


<6>capitalize


把字符串的第一个字符大写


mystr.capitalize()

ea644e451b8043b5bf941af949b4ec02.png


<7>title


把字符串的每个单词首字母大写


>>> a = "hello itcast"
>>> a.title()
'Hello Itcast'


<8>startswith


检查字符串是否是以 hello 开头, 是则返回 True,否则返回 False


1.语法


字符串序列.startswith(子串, 开始位置下标, 结束位置下标)


2.示例


mystr.startswith(hello)

d07352a61aeb48fe8c161b42368aa541.png


<9>endswith


检查字符串是否以obj结束,如果是返回True,否则返回 False.


mystr.endswith(obj)

1f3180a7a4af491ba773ec2e1ee8d8e6.png


<10>lower


转换 mystr 中所有大写字符为小写


mystr.lower()

708668f436cf490b8c2962ccb0d6b098.png


<11>upper


转换 mystr 中的小写字母为大写


mystr.upper()

064513f27f04434aa9f9c7eb54235293.png


<12>ljust


返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串


mystr.ljust(width) 

3d996feff8294c5b9e81103809d6182f.png


<13>rjust


返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串


mystr.rjust(width)

b7d03b41fec14c87987c62e8a63ec184.png


<14>center


返回一个原字符串居中,并使用空格填充至长度 width 的新字符串


mystr.center(width)

56189d69fa9b445ea40b8b3da9b44d42.png


<15>lstrip


删除 mystr 左边的空白字符


mystr.lstrip()

608b393eebc04fec9c2e39663d1e170c.png


<16>rstrip


删除 mystr 字符串末尾的空白字符


mystr.rstrip()

987ae87fde7640ed972bb7ab0eb2bc36.png


<17>strip


删除mystr字符串两端的空白字符


>>> a = "\n\t itcast \t\n"
>>> a.strip()
'itcast'


<18>rfind


类似于 find()函数,不过是从右边开始查找.


mystr.rfind(str, start=0,end=len(mystr) )

f2a61bc85f364908986d3e5ba093d276.png


<19>rindex


类似于 index(),不过是从右边开始.


mystr.rindex( str, start=0,end=len(mystr))

96b2a9293d8c42a3ab2626628f620ac3.png


<20>partition


把mystr以str分割成三部分,str前,str和str后


mystr.partition(str)

e7e84a65611e49dead622468e1f1e394.png


<21>rpartition


类似于 partition()函数,不过是从右边开始.


mystr.rpartition(str)

71714bddff0b4f8486a42967e474c36d.png


<22>splitlines


按照行分隔,返回一个包含各行作为元素的列表


mystr.splitlines()  

1f8cf92f373a4e64b2db76f74b9bded7.png


<23>isalpha


如果 mystr 所有字符都是字母 则返回 True,否则返回 False


mystr.isalpha()  

4f6a72850d51430cbb32abbeef902616.png


<24>isdigit


如果 mystr 只包含数字则返回 True 否则返回 False.


mystr.isdigit() 


cef69ce534794e868d4b372b4129cd52.png


<25>isalnum


如果 mystr 所有字符都是字母或数字则返回 True,否则返回 False


mystr.isalnum()  

32b7700aa0af445caf83d8e9ff11f2e8.png


<26>isspace


如果 mystr 中只包含空格,则返回 True,否则返回 False.


mystr.isspace()   


9923bce16b03437db971919fc79c5185.png


<27>join


mystr 中每个元素后面插入str,构造出一个新的字符串


1.语法


字符或子串.join(多字符串组成的序列)


1.示例


mystr.join(str)

4fa600fbd1984804add249984d26dcef.png


#想一想


  • (面试题)给定一个字符串aStr,返回使用空格或者'\t'分割后的倒数第二个子串


9c2e3db5fa4c486ea992788c7c91e6d5.png

目录
相关文章
|
2月前
|
存储 算法 数据库
使用python hashlib模块给明文字符串加密,以及如何撞库破解密码
`hashlib` 是 Python 中用于实现哈希功能的模块,它可以将任意长度的输入通过哈希算法转换为固定长度的输出,即散列值。该模块主要用于字符串加密,例如将用户名和密码转换为不可逆的散列值存储,从而提高安全性。`hashlib` 提供了多种哈希算法,如 `md5`、`sha1`、`sha256` 等。
46 1
|
11天前
|
Python
【10月更文挑战第6天】「Mac上学Python 11」基础篇5 - 字符串类型详解
本篇将详细介绍Python中的字符串类型及其常见操作,包括字符串的定义、转义字符的使用、字符串的连接与格式化、字符串的重复和切片、不可变性、编码与解码以及常用内置方法等。通过本篇学习,用户将掌握字符串的操作技巧,并能灵活处理文本数据。
46 1
【10月更文挑战第6天】「Mac上学Python 11」基础篇5 - 字符串类型详解
|
9天前
|
自然语言处理 Java 数据处理
【速收藏】python字符串操作,你会几个?
【速收藏】python字符串操作,你会几个?
39 7
|
1月前
|
Python
python获取字符串()里面的字符
在Python中,如果你想获取字符串中括号(比如圆括号`()`、方括号`[]`或花括号`{}`)内的字符,你可以使用正则表达式(通过`re`模块)或者手动编写代码来遍历字符串并检查字符。 这里,我将给出使用正则表达式的一个例子,因为它提供了一种灵活且强大的方式来匹配复杂的字符串模式。 ### 使用正则表达式 正则表达式允许你指定一个模式,Python的`re`模块可以搜索字符串以查找匹配该模式的所有实例。 #### 示例:获取圆括号`()`内的内容 ```python import re def get_content_in_parentheses(s): # 使用正则表达
80 36
|
19天前
|
索引 Python
Python 高级编程:深入探索字符串切片
在Python中,字符串切片功能强大,可灵活提取特定部分。本文详细介绍切片技巧:基本切片、省略起始或结束索引、使用负数索引、设定步长及反转字符串等。此外,还介绍了如何结合其他操作进行切片处理,如先转换大小写再提取子串。 来源:https://www.wodianping.com/yeyou/2024-10/48238.html
29 4
|
1月前
|
Python
python第三方库-字符串编码工具 chardet 的使用(python3经典编程案例)
这篇文章介绍了如何使用Python的第三方库chardet来检测字符串的编码类型,包括ASCII、GBK、UTF-8和日文编码的检测示例。
57 6
|
1月前
|
网络协议 网络安全 开发者
Python 向IP地址发送字符串
Python 向IP地址发送字符串
32 2
|
1月前
|
Python
Python 中取字符串中等于号后面的内容
Python 中取字符串中等于号后面的内容在编程过程中,我们经常需要从字符串中提取特定的信息。一个常见的任务是在给定的字符串中查找等于号(=)后面的内容。这种需求在解析配置文件、处理查询字符串或分析日志数据时尤其常见。 如何实现 在Python中,我们可以使用多种方法来实现此功能。以下是几种常用的方法,包括字符串操作和正则表达式。 方法 1:使用字符串分割 我们可以使用字符串的 split() 方法将字符串拆分为两个部分,然后提取等于号后的值。 示例代码 ----------------------------------- ©著作权归作者所有:来自51CTO博客作者bruce_xiao
28 1
|
11天前
|
存储 安全 Serverless
Python学习四:流程控制语句(if-else、while、for),高级数据类型(字符串、列表、元组、字典)的操作
这篇文章主要介绍了Python中的流程控制语句(包括if-else、while、for循环)和高级数据类型(字符串、列表、元组、字典)的操作。
24 0
|
18天前
|
Python
Python操作:字符串--列表--元组--字典--运算符 (一)
Python操作:字符串--列表--元组--字典--运算符 (一)
14 0