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的更多相关文章

  1. python学习4—数据结构之列表、元组与字典

    python学习4—数据结构之列表.元组与字典 列表(list)深灰魔法 1. 连续索引 li = [1,1,[1,["asdsa",4]]] li[2][1][1][0] 2. ...

  2. python学习四(处理数据)

    head first python中的一个数据处理的例子 有四个U10选手的600米成绩,请取出每个选手跑的最快的3个时间.以下是四位选手的9次成绩 James 2-34,3:21,2.34,2.45 ...

  3. 从0开始的Python学习012数据结构&对象与类

    简介 数据结构是处理数据的结构,或者说,他们是用来存储一组相关数据的. 在Python中三种内建的数据结构--列表.元组和字典.学会了使用它们会使编程变得的简单. 列表 list是处理一组有序的数据结 ...

  4. Python学习笔记——数据结构和算法(一)

    1.解压序列赋值给多个变量 任何的序列(或者是可迭代对象)可以通过一个简单的赋值语句解压并赋值给多个变量. 唯一的前提就是变量的数量必须跟序列元素的数量是一样的. >>> data ...

  5. python学习之数据结构

    python的数据很丰富,所以对于数据分析来讲, python是一种最合适的选择 下面讲述一下常见的数据结构,包括栈,队列,元组,字典,集合等,以及对这些数据结构进行操作 #堆栈,后进先出 a=[10 ...

  6. Python学习(四) Python数据类型:序列(重要)

    插播一下,先了解一下Python的数据类型,Python现有的数据类型有好多,最重要的有列表.元组.字典 列表:我觉得可以对应java中的数组 list=['physics', 'chemistry' ...

  7. Python学习(四):模块入门

    1.模块介绍 模块:代码实现的某个功能的集合 模块分类: 自定义模块 内置标准模块 开源模块 模块的常用方法: 是否为主文件:__name__ == '__main__' 如果是直接执行的某程序,那么 ...

  8. Python学习day3 数据类型Ⅰ(str,int,bool)

    day3  数据类型 @上节内容补充 每周一个思维导图-xmind.exe in / not in #示例:(是否包含敏感字符)while True:    text = input('请输入你要说的 ...

  9. Python学习四|变量、对象、引用的介绍

    变量 变量创建:一个变量也就是变量名,就像a,当代码第一次赋值时就创建了它.之后的赋值将会改变已创建的变量名的值,从技术上讲,Python在代码运行之前先检测变量名,可以当成是最初的赋值创建了变量. ...

  10. Python学习笔记——数据结构和算法(二)

    1.字典中一个键映射多个值 可以使用collections中的defaultdict来实现,defalultdict接受list或者set为参数 from collections import def ...

随机推荐

  1. ssh连接远程主机免密登入

    核心思想: 1.本地主机生成公钥私钥,私钥自己存着,公钥传到远程主机.ssh文件夹下authorized_keys文件(默认是这个,用追加的方式) 2.本地连接远程主机,公私钥对上就可以免密登入了. ...

  2. 【51nod】2026 Gcd and Lcm

    题解 话说LOJ说我今天宜学数论= =看到小迪学了杜教筛去蹭了一波小迪做的题 标解的杜教筛的函数不懂啊,怎么推的毫无思路= = 所以写了个复杂度稍微高一点的?? 首先,我们发现f是个积性函数,那么我们 ...

  3. Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) G - Xor-matic Number of the Graph 线性基好题

    G - Xor-matic Number of the Graph 上一道题的加强版本,对于每个联通块需要按位算贡献. #include<bits/stdc++.h> #define LL ...

  4. eclipse 创建 maven 项目时如何修改 web 的版本和 jdk 的版本

    eclipse 创建 maven 项目时如何修改 web 的版本和 jdk 的版本 在使用 eclipse 创建 maven 项目的时候,默认的 web.xml 的版本时 2.3,默认 jre 的版本 ...

  5. Java 基础总结大全

    Java 基础总结大全 一.基础知识 1.JVM.JRE和JDK的区别 JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性. java语言是跨平台,jv ...

  6. phpstorm使用和配置技巧

    1. 使用phpstorm的过程中,有时光标不小心变成了方块状,怎么修复回来呢? 见下图,去掉“Use block caret” 前面的对勾即可. 2.多项目并存的问题 PhpStorm或 WebSt ...

  7. Python编程举例-自定义日期格式

    #自定义格式 x = '{0}{0}{0}'.format('dog') print(x) class Date: def __init__(self,year, mon,day): self.yea ...

  8. UIViewController的基本概念与生命周期

    UIViewController是iOS顶层视图的载体及控制器,用户与程序界面的交互都是由UIViewController来控制的,UIViewController管理UIView的生命周期及资源的加 ...

  9. bound和unbound方法,类的绑定和非绑定是什么

    作者:灵剑链接:https://www.zhihu.com/question/41006598/answer/148994582来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...

  10. NOI2005 维护数列(splay)

    学了半天平衡树,选择了一道题来写一写,发现题目是裸的splay模板,但是还是写不好,这个的精髓之处在于在数列的某一个位置加入一个数列,类似于treap里面的merge,然后还学到了题解里面的的回收空间 ...