字符串的表示

字符串是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)

Python数据类型之字符串类型的更多相关文章

  1. Python笔记_第一篇_面向过程_第一部分_5.Python数据类型之字符串类型(string)

    关于Python的字符串处理也如其他语言一样属于重点中的重点,主要是牵扯到的函数和内容较为多和乱一些.关于什么是字符串,Python中的定义是:以单引号或者双引号括起来的任意文本. 1.   字符串的 ...

  2. Python数据类型-----数字&字符串

    Python数字类型 int类型表示的范围:-2147483648至2147483648之间,超出这个范围的数字即视为long(长整形) 在Python中不需要事先声明数据类型,它是根据具体的赋值来进 ...

  3. Python数据类型之字符串

    一:概述 Python中的字符串的一些概念 可以看作是字符的集合,在数据类型里没有单个字符的数据类型,可以用单个字符表示的一个字符串数据类型 字符串是一种不可变的序列类型,单个字符从左到右按照顺序排列 ...

  4. python的str()字符串类型的方法详解

    字符串一旦创建,不可修改,一旦修改或者拼接,都会造成重新生成字符串,因为内存存数据是一个挨着一个存的,如果增加一个字符串的话,之前的老位置只有一个地方,不够,这是原理性的东西,在其他语言里面也一样 7 ...

  5. Python数据类型-02.字符串

    本文主要记录字符串的相关知识,包括字符串的定义特点,常用方法和 请知悉: 计算机中,一切皆为对象世界万物,皆为对象,一切对象皆可分类 1.什么是字符串? 类似"hello world&quo ...

  6. Python数据类型(字符串)

    文章内容参考了教程:http://www.runoob.com/python/python-basic-syntax.html#commentform Python 字符串 字符串是 Python 中 ...

  7. python基础【2】——python数据类型之字符串

    python数据类型-字符串 一. 字符串的表示方法(str) 作用: 记录文本信息 表示方法:' ' 单引号 " "双引号 ''' '''三单引号 ""&qu ...

  8. python数据类型:序列(字符串,元组,列表,字典)

    序列通常有2个特点: 1,可以根据索引取值 2,可以切片操作 字符串,元组,列表,字典,都可以看做是序列类型 我的操作环境:Ubuntu16.04+python2.7 一.字符串类型 >按索引获 ...

  9. JavaScript数据类型 String字符串类型

    前言 javascript没有表示单个字符的字符型,只有字符串String类型,字符型相当于仅包含一个字符的字符串 字符串String是javascript基本数据类型,同时javascript也支持 ...

随机推荐

  1. EFCodeFirst 数据库连接

    EFCodeFirst 数据库连接 EFCodeFirst 数据库连接 1.NuGet安装实体命令 PM> Install-Package EntityFramework  2.数据库连接字符串 ...

  2. Go benchmark 一清二楚

    前言 基准测试(benchmark)是 go testing 库提供的,用来度量程序性能,算法优劣的利器. 在日常生活中,我们使用速度 m/s(单位时间内物体移动的距离)大小来衡量一辆跑车的性能,同理 ...

  3. Ch1-What is DAX?

    What is DAX? 数据分析表达式 (DAX) 是在 Analysis Services.Power BI 以及 Excel 中的 Power Pivot 使用的公式表达式语言.在第一版Powe ...

  4. 企业安全_检测SQL注入的一些方式探讨

    目录 寻找SQL注入点的 way MySQL Inject 入门案例 自动化审计的尝试之旅 人工审计才能保证精度 寻找SQL注入点的 way 在企业中有如下几种方式可以选择: 自动化 - 白盒基于源码 ...

  5. 通过golang小案例,了解golang程序常见机制

    目录 代码理解及纠错 1.defer和panic执行先后顺序 2.for循环元素副本问题 3.slice追加元素问题 4.返回值命名问题 5.用new初始化内置类型问题 6.切片append另外一个切 ...

  6. 大家最常用的编程论坛是哪个呢,欢迎评论!!掘金16 juejin 简书41 jianshu 博客85 csdn137 csdn

    软件编程交流论坛 掘金  16 juejin 简书  41 jianshu 博客  85 cnblogs csdn  137 csdn stackoverflow 0 思否 github 大家最常用的 ...

  7. 后台开发:核心技术与应用实践 -- C++

    本书介绍的"后台开发"指的是"服务端的网络程序开发",从功能上可以具体描述为:服务器收到客户端发来的请求数据,解析请求数据后处理,最后返回结果. C++编程常用 ...

  8. git配置,以及简单的命令

    在 window 平台需要安装对应的客户端 git 配置全局用户名git config --global user.name "xxx"配置全局邮箱git config --glo ...

  9. 时间同步chrony,最全最细

    时间同步服务 多主机协作工作时,各个主机的时间同步很重要,时间不一致会造成很多重要应用的故障,如:加密协 议,日志,集群等, 利用NTP(Network Time Protocol) 协议使网络中的各 ...

  10. 通过xshell实现内网linux上公网yum、apt-get安装软件

    环境:在内网,我的机器可上网,内网服务器不可上网,本来在我机器上开个代理,服务器直接通过我机器上网就可以,奈何网络配置太复杂,目前只有ssh端口可通. 先安装ccproxy软件,配置http监听端口为 ...