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. MINIBASE源代码阅读笔记之buffer manager

    BufDesc frame 们的 descriptor(见BufHashTbl注释),包括 pageNo: 这个 frame 在文件里的id,page number prevframe: -1 表示此 ...

  2. TPC-H数据导入MySQL教程

    0. TPC-H是啥 TPC-H是TPC提供的一个benchmark,用来模拟一个现实中的商业应用,可以生成一堆虚构的数据,且自带一些查询,可以导入到各种数据库中来模拟现实需求,检查性能. 具体是怎样 ...

  3. 实现优先级队列 --heapq模块

    以给定的优先级对元素进行排序,每次pop删除优先级最高的 # coding=utf-8 # example.py # # Example of a priority queue import heap ...

  4. node+express+socket.io+mysql=通讯服务器搭建(一)

    首发github/blog 欢迎大家评论给星 安装 首先假定你已经安装了 Node.js,接下来为你的应用创建一个目录,然后安装express-generator应用骨架 $ mkdir node-d ...

  5. LR-事务

    一.对事务的理解 在LR中什么是事务,事务是记录从客户端到服务器端,服务器端返回到客户端应答的时间,可以反映出一个操作所用的时间.那么事务的时间主要是由响应时间.事务自身时间.浪费时间(wasted ...

  6. Window 下一台机器配置三个Tomcat实例

    下面我们把配置的详细过程写在下面,以供参考:(此例以配置三个Tomcat为例) 1. 下载apache-tomcat-8.0.63,下载下来的文件为apache-tomcat-8.0.63.zip. ...

  7. Wannafly挑战赛7 B - codeJan与旅行

    题目描述 codeJan 非常喜欢旅行.现在有 n 个城市排在一条线上,并且 codeJan 的位置不和任何一个城市的位置重叠.codeJan 想要游览 m 个城市,同时因为时间是不断变化的,游览一个 ...

  8. python 计算md5

    import hashlib src = "afnjanflkas" m2 = hashlib.md5() m2.update(src) print m2.hexdigest() ...

  9. mysql-8.0.12安装和配置

    1.下载Mysql8.0.12压缩包.下载地址:https://dev.mysql.com/downloads/file/?id=480557 2.解压文件到本地指定目录.这里我的mysql根目录是: ...

  10. 【BZOJ 3043】 3043: IncDec Sequence (差分)

    3043: IncDec Sequence Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 589  Solved: 332 Description 给 ...