Python数据类型之字符串类型
字符串的表示
字符串是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数据类型之字符串类型的更多相关文章
- Python笔记_第一篇_面向过程_第一部分_5.Python数据类型之字符串类型(string)
		关于Python的字符串处理也如其他语言一样属于重点中的重点,主要是牵扯到的函数和内容较为多和乱一些.关于什么是字符串,Python中的定义是:以单引号或者双引号括起来的任意文本. 1. 字符串的 ... 
- Python数据类型-----数字&字符串
		Python数字类型 int类型表示的范围:-2147483648至2147483648之间,超出这个范围的数字即视为long(长整形) 在Python中不需要事先声明数据类型,它是根据具体的赋值来进 ... 
- Python数据类型之字符串
		一:概述 Python中的字符串的一些概念 可以看作是字符的集合,在数据类型里没有单个字符的数据类型,可以用单个字符表示的一个字符串数据类型 字符串是一种不可变的序列类型,单个字符从左到右按照顺序排列 ... 
- python的str()字符串类型的方法详解
		字符串一旦创建,不可修改,一旦修改或者拼接,都会造成重新生成字符串,因为内存存数据是一个挨着一个存的,如果增加一个字符串的话,之前的老位置只有一个地方,不够,这是原理性的东西,在其他语言里面也一样 7 ... 
- Python数据类型-02.字符串
		本文主要记录字符串的相关知识,包括字符串的定义特点,常用方法和 请知悉: 计算机中,一切皆为对象世界万物,皆为对象,一切对象皆可分类 1.什么是字符串? 类似"hello world&quo ... 
- Python数据类型(字符串)
		文章内容参考了教程:http://www.runoob.com/python/python-basic-syntax.html#commentform Python 字符串 字符串是 Python 中 ... 
- python基础【2】——python数据类型之字符串
		python数据类型-字符串 一. 字符串的表示方法(str) 作用: 记录文本信息 表示方法:' ' 单引号 " "双引号 ''' '''三单引号 ""&qu ... 
- python数据类型:序列(字符串,元组,列表,字典)
		序列通常有2个特点: 1,可以根据索引取值 2,可以切片操作 字符串,元组,列表,字典,都可以看做是序列类型 我的操作环境:Ubuntu16.04+python2.7 一.字符串类型 >按索引获 ... 
- JavaScript数据类型 String字符串类型
		前言 javascript没有表示单个字符的字符型,只有字符串String类型,字符型相当于仅包含一个字符的字符串 字符串String是javascript基本数据类型,同时javascript也支持 ... 
随机推荐
- 第一篇文章 vim的使用
			这么长时间以来,一直没有在博客园上写过博文.那第一篇博文就以vim的使用为开端吧. 不知道有多少人还在用着ctrl+c,ctrl+v这种方式,不过,就我个人而言,还是很倾向于vim的.不管是在服务器上 ... 
- pyinstaller打包exe运行失败
			使用Pyinstaller来打包自己开发的软件时遇到的几个问题及解决方法.工具主要功能是数据分析,使用机器学习算法完成数据训练和预测功能.主要用到了两个学习库keras和sklearn,所以说在打包时 ... 
- DES加密详解
			目录 1 根据输入的秘钥得到16个子秘钥 1.1 大致流程 1.2 利用PC-1从K_0中挑出K_1 1.3 利用PC-2从K_1中挑出16个子秘钥 2 利用16个子秘钥对明文进行加密 2.1 大致流 ... 
- POJ-2516(最小费用最大流+MCMF算法)
			Minimum Cost POJ-2516 题意就是有n个商家,有m个供货商,然后有k种商品,题目求的是满足商家的最小花费供货方式. 对于每个种类的商品k,建立一个超级源点和一个超级汇点.每个商家和源 ... 
- C语言经典88案例,我文科妹妹说她都学会了!
			案例ex01: 将字符串转换为一个整数 1 题目 函数:fun() 功能:将字符串转换为一个整数 描述: [不能使用C语言提供的字符串函数] 输入:字符串"-1234" 输出:整型 ... 
- Java 哈希表(google 公司的上机题)
			1 哈希表(散列)-Google 上机题 1) 看一个实际需求,google 公司的一个上机题: 2) 有一个公司,当有新的员工来报道时,要求将该员工的信息加入(id,性别,年龄,住址..),当输入该 ... 
- C指针与二维数组
			先贴上完整的代码: #include<stdio.h> int main(int argc, char *argv[]){ int a[3] [5]={1,2,3,4,5,6,7,8,9, ... 
- 事件 on
			$(选择器).on(事件名称,事件的处理函数) 事件名称:js事件去掉on的部分,例如js中onclick,这里就是click 例如:<input type="button" ... 
- elf.h
			1 /* This file defines standard ELF types, structures, and macros. 2 Copyright (C) 1995-2019 Free So ... 
- PAT (Advanced Level) Practice 1046 Shortest Distance (20 分) 凌宸1642
			PAT (Advanced Level) Practice 1046 Shortest Distance (20 分) 凌宸1642 题目描述: The task is really simple: ... 
