Python学习(四)数据结构 —— str
Python 字符串 str
本章大致介绍了 Python 的字符串类型 str,包括字符串的赋值及转义、字符串运算符、字符串格式化输出 以及 一些字符串的内建函数等。
字符串赋值及转义
我们可以使用引号来创建字符串(单引号、双引号)
字符串需要使用特殊字符时,python用反斜杠(\)转义字符,注意引号和换行
s1 = "Hello \"World\"" # 可用"" 注意引号的转义
s2 = 'Welcome to Fees\'s land' # 也可用'' 注意引号的转义
print(s1)
print(s2)
print("a\n b") # \n表示换行 注意空格保留
字符串运算符
字符串在python中的使用很方便,简单介绍如下几个:
in; not in 简单判断字符串是否包含字符
s = "python study"
print("p" in s) # 若字符包含在字符串中,返回True
print("p" not in s) # 字符不包含在字符串中,返回True
print("tho" in s) # 多字符寻找
print("P" in s) # 区分大小写
print("n s" in s) # 注意空格
print("n s" in s) # 返回False
字符串拼接、重复输出
print('p'+'y'+'t'+'h'+'o'+'n') # + 做字符串的拼接
print("p"*5) # * 做字符串重复输出
print(3*"hi ") # 注意空格,字符串最后一个字符仍为空格
取出字符串的某个字符
s = "abc de"
print(s[0]) # 从0开始计算
print(s[3]) # 空格
# print(s[6]) # 会报错 out of range
取出部分字符,可设置截取起始及截止,可设置步长,步长可设置为负数,表示反向截取;具体参考下例来理解
s = ""
print(s[0:0])
print(s[0:1])
print(s[0:2])
print(s[0:6:2]) # 从下标为0的字符 隔2个
print(s[0:7:2])
print(s[3:0:-1]) # 反向输出
print(s[3:2:-1])
print(s[7:0:-2]) # 反向输出,从下标为7的字符开始
print(s[6:0:-2])
print(s[::-1]) # 反向输出全部
输出字符串长度 len(s)
s = "python study" # 空格为一个字符
print(len(s))
print(len(" ")) # 3个空格 返回3
print(len("python\nstudy")) # 换行符为一个字符
字符串格式化输出
Python 支持格式化字符串的输出 。尽管这样可能会用到非常复杂的表达式,但基本用法是将一个值插入到一个有字符串格式符 %s 的字符串中。
在 Python 中,字符串格式化使用与 C 中 sprintf 函数一样的语法。详细参考 python字符串相关参考
name = "fee"
age = 18
print("My name is %s, I'm %d year old." %(name,age)) # 老的表示方法 均可使用
print('The value of PI is approximately %.3f.' %(3.1415926)) # 表示取小数点后三位
另外,可用 str.format() 函数来格式化输出;字符串的format函数可以接受的参数个数不限,位置可以不按顺序,可以不用或者用多次,不过2.6不能为空{},2.7才可以。
通过 str.format() 可以将list、tuple、dict 传值,比较灵活;通过对象定位输出也比较方便,且不易出错(class 的例子看不懂可看完 class 对象后再来看)
name = "fee"
age = 18
print("My name is {}, I'm {} year old.".format(name,age)) # 2.6后出现的方法 str.format() ;2.6不能为 {},2.7 可以
print("My name is {1}, I'm {0} year old.".format(age,name)) # {0}对应age;{1}对应name
print("My name is {name}, I'm {age} year old.".format(name="fei",age=20)) # 关键字参数可自定义
print("My name is {name}, I'm {age} year old.".format(name=name,age=age)) # 关键字跟变量是不同的 class User(): # 构造对象
def __init__(self,name,age):
self.name=name
self.age=age
def print_name(self):
print("My name is {self.name}.\nI'm {self.age} year old.".format(self=self)) # 通过对象属性可准确定位输出
user1 = User("Fee",18) # 对象实例
user1.print_name() # 调用对象方法
字符串内建函数
仅列出常用函数。详细参考 python字符串相关参考
str.lower() str.upper() str.capitalize() str.title()
s = "Python STUDY"
s.lower() # Return a copy of the string with all the cased characters [4] converted to lowercase.
print(s) # 不改变s本身
print(s.lower())
print(s.upper()) # Return a copy of the string with all the cased characters converted to uppercase.
print(s.capitalize()) # Return a copy of the string with its first character capitalized and the rest lowercased.
print(s.title()) # Return a titlecased version of the string where words start with an uppercase character and the remaining characters are lowercase.
print(s.swapcase()) # Return a copy of the string with uppercase characters converted to lowercase and vice versa.
str.isalnum() str.isalpha() str.isdigit() str.isspace() str.islower() str.isupper() str.istitle()
a = ""
b = "abc"
c = "abc012"
d = "Abc012"
e = "ABC012"
f = ""
g = " "
h = "Python Study"
i = "It's funny."
print(c.isalnum(),b.isalnum(),f.isalnum()) # 是否全是字母和数字,并至少有一个字符
print(b.isalpha(),c.isalpha(),f.isalpha()) # 是否全是字母,并至少有一个字符
print(a.isdigit(),c.isdigit(),f.isdigit()) # 是否全是数字,并至少有一个字符
print(b.islower(),c.islower(),f.islower()) # str中的字母是否全是小写
print(e.isupper(),d.islower(),f.islower()) # str中的字母是否全是大写
print(h.istitle(),i.istitle(),f.istitle()) # str是否是首字母大写的,指的是每个单词首字母大写
print(g.isspace(),a.isspace(),f.isspace()) # 是否全是空白字符,并至少有一个字符
str.startwith(prefix[,start[,end]]) str.endwith(suffix[,start[,end]])
s = "Python Study"
print(s.startswith("Py"),s.startswith("py"),s.startswith("St",7)) # str.startwith(prefix[,start[,end]]) 是否以prefix开头; 注意大小写、空格
print(s.endswith("dy"),s.endswith(" dy"),s.endswith("Python",0,6)) # str.endwith(suffix[,start[,end]]) 是否以suffix结尾
str.index(sub[, start[, end]]) str.rindex(sub[, start[, end]])
str.find(sub[, start[, end]]) str.rfind(sub[, start[, end]])
str.index 和 str.find 的区别是,index 找不到会报错;find 找不到返回-1
s = "abbccaacad"
print(s.index("a")) # 输出第一次出现"a"的下标
print(s.index("aa")) # 输出第一次出现"aa"的下标
print(s.index("a",6,9)) # 从下标6算起,输出第一次出现"a"的下标
print(s.rindex("a")) # 从结尾开始搜索
# print(s.index("aaa")) # 找不到会报错
# print(s.index("a",7,8)) # 同样报错
print()
print(s.find("a")) # find用法基本同index 但没有找到会返回-1 而不是报错
print(s.find("aa"))
print(s.find("a",6,9))
print(s.rfind("a")) # 从结尾开始搜索
print(s.find("aaa")) # find 找不到不会报错,返回 -1
print(s.find("a",7,8))
str.count(sub[, start[, end]])
s = "abbccaacad"
print(s.count("a")) # "a"出现的次数
print(s.count("ca")) # "ca"出现的次数
print(s.count("aaa")) # 出现次数为0
str.replace(old, new[, count])
s = "abAccaacad"
print(s.replace("a","x")) # 用"x"替换"a"
s_r = s.replace("a","") # 相当于删除所有的"a"
print(s_r,len(s),len(s_r))
print(s.replace("a","x",2)) # 仅替换2次
print(s.replace("ca","xx")) # 用"xx"替换"ca"
print(s.replace("a ","x")) # 无匹配,无替换,注意空格
str.strip([chars]) str.lstrip([chars]) str.rstrip([chars])
去头尾字符,缺省为删除空格,注意的是头尾去除按每一个字符来算,非 prefix 或 suffix
s = " hello hi "
s_strip = s.strip() # 去前后空格
s_lstrip = s.lstrip() # 去左边空格
s_rstrip = s.rstrip() # 去右边空格
print(s_strip + 'x')
print(s_lstrip + 'x')
print(s_rstrip + 'x')
print(len(s),len(s_strip),len(s_lstrip),len(s_rstrip))
print(s.strip(' h')) # 头尾去空格或者h
print(s.strip('hi ')) # 头尾去h、i或者空格
str.split(sep=None, maxsplit=-1)
根据 sep 来分割字符串 str,会返回一个list,具体理解详见下面例子
s = "a b c"
print(s.split()) # 返回list,可直接输出,默认以空格分割
s = "a,b,c"
print(s.split()) # 无法分割,为一个元素
print(s.split(',')) # 设置分割符
s = "a,b,,c"
print(s.split(',')) # 分割符补位空格,会输出空元素
s = "a b c"
print(s.split()) # 可做多个空格的分割,无空元素
print(s.split(' ')) # 会输出空元素
str.join(iterable)
用str来链接序列的元素,返回的是一字符串,(例子看不懂可看完后续list tuple set后再来看)
s = "-"
print(s.join(["P","y","t","h","o","n"])) # list有序
print(s.join(("P","y","t","h","o","n"))) # tuple有序
print(s.join({"P","y","t","h","o","n"})) # set无序
Python学习(四)数据结构 —— str的更多相关文章
- python学习4—数据结构之列表、元组与字典
python学习4—数据结构之列表.元组与字典 列表(list)深灰魔法 1. 连续索引 li = [1,1,[1,["asdsa",4]]] li[2][1][1][0] 2. ...
- python学习四(处理数据)
head first python中的一个数据处理的例子 有四个U10选手的600米成绩,请取出每个选手跑的最快的3个时间.以下是四位选手的9次成绩 James 2-34,3:21,2.34,2.45 ...
- 从0开始的Python学习012数据结构&对象与类
简介 数据结构是处理数据的结构,或者说,他们是用来存储一组相关数据的. 在Python中三种内建的数据结构--列表.元组和字典.学会了使用它们会使编程变得的简单. 列表 list是处理一组有序的数据结 ...
- Python学习笔记——数据结构和算法(一)
1.解压序列赋值给多个变量 任何的序列(或者是可迭代对象)可以通过一个简单的赋值语句解压并赋值给多个变量. 唯一的前提就是变量的数量必须跟序列元素的数量是一样的. >>> data ...
- python学习之数据结构
python的数据很丰富,所以对于数据分析来讲, python是一种最合适的选择 下面讲述一下常见的数据结构,包括栈,队列,元组,字典,集合等,以及对这些数据结构进行操作 #堆栈,后进先出 a=[10 ...
- Python学习(四) Python数据类型:序列(重要)
插播一下,先了解一下Python的数据类型,Python现有的数据类型有好多,最重要的有列表.元组.字典 列表:我觉得可以对应java中的数组 list=['physics', 'chemistry' ...
- Python学习(四):模块入门
1.模块介绍 模块:代码实现的某个功能的集合 模块分类: 自定义模块 内置标准模块 开源模块 模块的常用方法: 是否为主文件:__name__ == '__main__' 如果是直接执行的某程序,那么 ...
- Python学习day3 数据类型Ⅰ(str,int,bool)
day3 数据类型 @上节内容补充 每周一个思维导图-xmind.exe in / not in #示例:(是否包含敏感字符)while True: text = input('请输入你要说的 ...
- Python学习四|变量、对象、引用的介绍
变量 变量创建:一个变量也就是变量名,就像a,当代码第一次赋值时就创建了它.之后的赋值将会改变已创建的变量名的值,从技术上讲,Python在代码运行之前先检测变量名,可以当成是最初的赋值创建了变量. ...
- Python学习笔记——数据结构和算法(二)
1.字典中一个键映射多个值 可以使用collections中的defaultdict来实现,defalultdict接受list或者set为参数 from collections import def ...
随机推荐
- ASP.NET MVC 3和Razor中的@helper
ASP.NET MVC 3支持一项名为“Razor”的新视图引擎选项(除了继续支持/加强现有的.aspx视图引擎外).当编写一个视图模板时,Razor将所需的字符和击键数减少到最小,并保证一个快速.通 ...
- JAVAEE学习——hibernate04:查询种类、HQL、Criteria、查询优化和练习为客户列表增加查询条件
一.查询种类 1.oid查询-get 2.对象属性导航查询 3.HQL 4.Criteria 5.原生SQL 二.查询-HQL语法 //学习HQL语法 public class Demo { //基本 ...
- Beaglebone Black开发板安装驱动
Beaglebone Black开发板安装驱动 Beaglebone Black开发板安装驱动,在使用Beaglebone Black开发板子做任何事情之前首先需要安装驱动.下面的内容就了展示在Win ...
- Netstat -tln 命令是Linux查看端口使用情况
Netstat -tln 命令是Linux查看端口使用情况
- Selenium快速入门(下)
Frame相关 import time from selenium import webdriver from selenium.common.exceptions import NoSuchElem ...
- C++ STL 全排列函数详解
一.概念 从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列.当m=n时所有的排列情况叫全排列.如果这组数有n个,那么全排列数为n!个. 比如a ...
- 我的OI生涯 第四章
第四章 晚上来机房的人越来越多了,我也注意到一个常年独自坐在一个角落的男人————郝哥. 郝哥为人很安静,只是那时我还不知道他好不好,就没有与他交流过什么,这个优秀的男人以后我们还会提到,这里先不讲. ...
- WC2018伪题解
NOIP分数过低的场外选手,一个月之后才有幸膜到这套卷子.感觉题目质量很不错啊,可惜了T1乱搞可过,T2题目出锅非集训队员没有通知到,导致风评大幅被害. 感觉Cu的话随手写两个暴力就稳了,Ag的话T3 ...
- BZOJ3289[JZYZOJP2018]: Mato的文件管理 莫队+树状数组+离散化
描述 Description Mato同学从各路神犇以各种方式(你们懂的)收集了许多资料,这些资料一共有n份,每份有一个大小和一个编号.为了防止他人偷拷,这些资料都是加密过的, ...
- Python字典树实现
class Trie: # word_end = -1 def __init__(self): """ Initialize your data structure he ...