字符串的表示

字符串是Python中最常用的数据类型之一,必须使用成对的引号包围来表示字符串,引号可以是单引号 ' 、双引号 " 、三引号''' """,格式如下:

a = 'hello'
b = 'python'
c = "I'm boy"
d = '''Hi, I'm Tom'''
e = """I
am Boy"""
print(type(e)) # <class 'str'>

注: 字符串是不可变的数据类型

字符串的下标、切片

字符串下标

获取指定下标的数据

words = 'zhangsan'
print(words[0]) # z
print(words[3]) # n
print(words[5]) # s
print(words[-1]) # n

注:下标从0开始,最后一个元素的的下标为-1

字符串切片

对于指定的对象,对其中部分的数据进行操作,叫做切片。字符串、列表、元组都支持切片操作。切片是从指定的字符串里面复制一段指定的内容,生成的是一个新的字符串。

语法:

序列[开始下标:结束下标:步长]

注意:

1.不包含结束位置下标的数据,正负整数都可以。

2.步长是选取间隔,正负整数都可以,默认的步长是1,不能为0。

示例:

m = 'abcdefghijk'

print(m[2:4])  # cd
print(m[2:4:1]) # cd
print(m[3:6:2]) # df
print(m[:3]) # abc 如果不指定开始下标,则默认从0开始 print(m[6:]) # ghijk 如果不指定结束下标,则选取到最后
print(m[:]) # abcdefghijk 如果不指定开始和结束,则选取所有 print(m[::-1]) # kjihgfedcba # 步长为负数,表示倒序选取
print(m[-4:-1]) # hij
print(m[-4:-1:-1]) # 不能选取数据 从-4开始到-1结束,选取方向为从左到右,但是步长为-1,则表示从右向左 print(m[-1:-4:-1]) # kji

字符串的常见操作

+: 字符串拼接

使用 + 拼接字符串

a = "hello"
print(a * 3) # hellohellohello
a = "Hello"
b = "World"
c = a + b
print(c) # HelloWorld

*: 字符串重复

使用 * 重复输出字符串

a = "hello"
print(a * 3) # hellohellohello

in: 判断字符是否存在

如果存在返回True,不存在返回False

str1 = "abcde"
print("a" in str1) # True
print("f" in str1) # False

not in: 判断字符是否不存在

如果不存在返回True,存在返回False,

str2 = "abcde"
print("a" not in str2) # False
print("f" not in str2) # True

del: 使用del关键字删除字符串

# 删除整个字符串
str1 = "abcd"
del str1
print(str1) # del删除的是变量,而不是数据
str2 = "hello"
str3 = str2
del str2
print(str3)

字符串的遍历

使用while循环

message = "你好呀Python"
i = 0
while i < len(message):
print(message[i])
i += 1

使用for循环

message = "你好呀Python"
for v in message:
print(v)

使用for循环和range()

message = "你好呀Python"
for index in range(len(message)):
print(message[index])

使用enumerate函数

message = "你好呀Python"
for index, value in enumerate(message):
print(index, value)

使用内置函数iter

message = "你好呀Python"
for v in iter(message):
print(v)

字符串常见的方法

Python中字符串对象提供了很多内置方法来操作字符串,在Python中字符串是不可变的,所以字符串所有相关的方法都不会改变原有字符串,都是返回一个新的字符串。

获取字符串的长度

len()方法

len方法用来获取字符串的长度。

test_str = 'Hello Python !'
print(len(test_str)) # 14

查找某个子串

find()

如果子串包含在该字符串中,则返回这个子串的下标,否则返回-1

语法:

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

注:开始和结束下标可以省略,表示在整个字符串序列中查找。

示例:

test_str = 'Hello Python and World!'
print(test_str.find('Python')) # 6
print(test_str.find('hello')) # -1
print(test_str.find('and', 10, 20)) # 13

index()

如果子串包含在该字符串中,则返回这个子串的下标。

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

注意:使用index方法,当找不到对应的子串时,程序会报错。

示例:

my_str = 'Hello Python and World!'
print(my_str.index('World')) # 17
print(my_str.find('and', 10, 20)) # 13
print(my_str.index('Worlds')) # 程序会报错

count()

count方法用来查找子串出现的个数。

语法:

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

注意:开始和结束位置下标可以省略,表示在整个字符串中查找。

示例:

my_str = 'Hello Python and and World!'
print(my_str.count('and')) # 2
print(my_str.count('and', 12, 16)) # 1
print(my_str.count('ands')) # 0

rfind()

和find()作用相同,但是查找方向是从右侧开始。

示例:

my_str = 'Hello Python and and World!'
print(my_str.rfind('and')) # 17
print(my_str.rfind('ands')) # -1

rindex()

和index()作用相同,但是查找方向是从右侧开始。

示例:

my_str = 'Hello Python and and World!'
print(my_str.rindex('and')) # 17
print(my_str.rindex('ands')) # 程序报错

修改字符串

注意:原字符串没有修改,只是返回新的字符串。

replace()

语法:

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

示例:

my_str = 'Hello World! Hello Python!'
new_str = my_str.replace('Python', 'Java')
print(my_str) # Hello World! Hello Python!
print(new_str) # Hello World! Hello Java!

split()

按照指定字符分割字符串,转为列表。

语法:

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

注: num表示的是分割字符出现的次数,即将来返回数据个数为num + 1

示例:

my_str = 'he and llo and  wor and ld!'
news_str = my_str.split('and')
print(news_str) # ['he ', ' llo ', ' wor ', ' ld!'] news_str2 = my_str.split('and', 2)
print(news_str2) # ['he ', ' llo ', ' wor and ld!']

partition()

指定一个分隔符,如果字符串包含指定的分隔符,将整个字符串拆分为包含三个元素的元组。第一个元素包含指定分割符之前的部分。第二个元素包含指定的字符串分隔符。第三个元素包含指定分割符后面的部分。

注:该方法搜索指定字符串的第一个匹配项。

str1 = "qwert-yuiop"
print(str1.partition("-")) # ('qwert', '-', 'yuiop') str2 = "qwert-yui-op"
print(str2.partition("-")) # ('qwert', '-', 'yui-op')

join()

将列表转为字符串

示例:

my_list = ['aa', 'bb', 'cc']
new_str = '...'.join(my_list)
print(new_str) # aa...bb...cc

capitalize()方法

将字符串第一个字符转为大写。

my_str = 'hello world!'
new_str =my_str.capitalize()
print(new_str) # Hello world!

title()

字符串中每个单词首字母大写。

my_str = 'hello world lalala'
new_str =my_str.title()
print(new_str) # Hello World Lalala

upper()方法

将字符串所有字符转为大写。

my_str = 'hello world lalala'
new_str =my_str.upper()
print(new_str) # HELLO WORLD LALALA

lower()

将字符串所有字符转为小写。

my_str = 'Hello WorlD PytHon'
new_str =my_str.lower()
print(new_str) # hello world python

strip()

删除字符串两侧空格

my_str = ' hello python '
print(my_str.strip()) # hello python

lstrip()

删除字符串左侧空格。

my_str = ' hello python ! '
print(my_str.lstrip()) # hello python !

rstrip()方法

删除字符串右侧空格。

my_str = ' hello python '
print(my_str.rstrip()) # hello python

ljust()

返回一个原字符串左对齐,并使用 fillchar 填充至指定长度 width 的新字符串,fillchar 默认为空格。

示例:

rjust()

返回一个原字符串右对齐,并使用fillchar填充至指定长度 width 的新字符串。fillchar 默认为空格。

示例:

center()

返回一个指定的长度 width 居中的字符串,fillchar 为填充的字符,默认为空格。

示例:

字符串判断

startswith()

判断查字符串是否是以指定子字符串开头,如果是则返回True,否则返回False。如果指定start和end,则在指定范围内判断。

my_str = "Hello Python"
print(my_str.startswith("H")) # True
print(my_str.startswith("Hello")) # True
print(my_str.startswith("Hello P")) # True
print(my_str.startswith("Python")) # False

endswith()

检查字符串是否以指定子串结束,如果是则返回True,否则返回False,如果指定start和end,则在指定的范围内检查。

my_str = "Hello Python"

print(my_str.endswith('Python'))  # True
print(my_str.endswith('n')) # True
print(my_str.endswith('Hello')) # False

isalpha()

如果字符串至少有一个字符并且所有字符都是字母或中文字则返回True,否则返回False

my_str = "Hello"
print(my_str.isalpha()) # True my_str1 = "Hello Python"
print(my_str1.isalpha()) # False

isdigit()

如果字符串只包含数字则返回True,否则返回False。

my_str = "123"
print(my_str.isdigit()) # True my_str1 = "123abc"
print(my_str1.isdigit()) # False

isalnum()

如果字符串至少有一个字符并且所有字符都是字母或数字则返回True,否则返回False。

my_str = "123"
print(my_str.isalnum()) # True my_str1 = "123 abc"
print(my_str1.isalnum()) # False my_str2 = "abc"
print(my_str2.isalnum()) # True

isspace()

如果字符串中只包含空白,则返回True,否则返回False。

my_str = "abc"
print(my_str.isspace()) # False my_str1 = " "
print(my_str1.isspace()) # True

encode()

将字符串按照指定方式编码。

name = "小明"
print(name.encode("utf-8")) # b'\xe5\xb0\x8f\xe6\x98\x8e'

decode()

将字符串按照指定方式解码。

name = "小明"
data = name.encode("utf-8")
print(data.decode("utf-8"))

注意: 用什么方式编码,就要以什么方式解码。

常见的字符编码

计算机只能处理数字(0和1),如果要处理文本,必须先把文本转为数字01才能处理。这种转换方式称为字符编码。

常见的字符编码如下:

  • ASCII编码

ASCII码使用指定的7位或8位二进制数组合来表示128或256种可能的字符,基础ASCII码使用7位二进制数来表示所有的大写和小写字母、数字0到9、标点符号以及一些特殊字符。每一位0或者1所占的空间单位为bit(比特),这是计算机中最小的表示单位,每8个bit组成一个字符,这是计算机中最小的存储单位。

  • Unicode编码

为了解决传统的字符编码的局限,国际组织制定了Unicode编码,用来对世界上大部分的文字和符号进行编码,使电脑可以更方便的处理和展示文字。Unicode采用16位编码空间,每个字符占2个字节。

  • UTF-8编码

使用统一的Unicode编码,乱码问题从此消失了,但是比ASCII编码需要多一倍的存储空间,在存储和传输上就十分不划算。UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,英文字符还是用一个byte编码,汉字通常使用两个字节或三个字节表示。

转义字符

有很多特殊字符没有办法用普通字符表示,需要进行转义。python用反斜杠\ + 字符 进行转义。

如下常见的转义字符:

转义字符 描述
\(在行尾时) 续行符
\\ 反斜杠符号
\' 单引号
\" 双引号
\a 响铃
\b 退格(Backspace)
\e 转义
\000
\n 换行
\v 纵向制表符
\t 横向制表符
\r 回车
\f 换页
\oyy 八进制数,yy代表的字符,例如:\o12代表换行
\xyy 十六进制数,yy代表的字符,例如:\x0a代表换行
\other 其它的字符以普通格式输出

示例:

s = 'I\'m fine'
print(s) # I'm fine s = "Hel\tlo"
print(s) # Hel lo

原始字符串

在字符串前加上r可以防止字符转义,比如当字符串中出现'\n',想要原样输出时。

my_str = "abc\ndef"
print(my_str) my_str2 = r"abc\ndef"
print(my_str2)

最新文章

  1. linux rpm问题:怎样查看rpm安装包的安装路径
  2. 获取dom元素的宽度和高度
  3. Oracle监控代理安装ITM(IBM Tivoli Monitoring)
  4. awk 指定{}内x的替换
  5. input和textarea标签的select()方法----选中文本框中的所有文本
  6. C语言成语设计第一次作业
  7. Parallel.For 平行算法 使用
  8. linux设置静态IP及网卡选择
  9. Python的迭代器和生成器
  10. docker学习-常用命令2
  11. python学习,excel操作之xlsxwriter常用操作
  12. angular 中如果表单有相同的name一般会出现如下错误
  13. 【centos6.6环境搭建】Github unable to access SSL connect error出错处理
  14. js中如何返回一个存放对象的数组?
  15. hadoop 2.7.1安装和配置
  16. POJ2728 Desert King
  17. css中选择器
  18. Python shutil模块(目录和文件操作)
  19. CefSharp,Winform程序中加载web网页
  20. HADOOP操作权限问题

热门文章

  1. 阻塞队列——四组API
  2. 后端程序员之路 34、Index搜索引擎实现分析3-对文章索引的两层分块
  3. QuickBase64 - Android 下拉通知栏快捷base64加解密工具
  4. ReactElement源码笔记
  5. HDOJ-1358(字符串压缩+KMP)
  6. 洛谷P3285 [SCOI2014]方伯伯的OJ 动态开点平衡树
  7. C# 基础 - Json 之间的转换
  8. Codeforces Round #538 D. Lunar New Year and a Wander
  9. ajax传数组后台GO语言接收
  10. string与bson.ObjectId之间格式转换