Python入门 —— 04字符串解析
字符串
-字符串是 Python 中最常用的数据类型。(可以说是大多数语言都常用)
1. 创建字符串
( '' 或 "" 和 '''''')(单,双和三引号)(字符串可以为空)
-单引号:包含普通字符串,可以包含双引号,不能包含特殊字符。
-双引号:可以包含单引号。
-三引号:可以包含单引号和双引号,可以包含特殊字符。三引号包含的字符串可由多行组成,一般可表示大段的叙述性字符串。(所见即所得)
str = '' (此时字符串str即为空)
str1 = 'hello'
str2 = "world"
str3 = '''
<HTML><HEAD><TITLE>
Friends CGI Demo</TITLE></HEAD>
<BODY><H3>ERROR</H3>
<B>%s</B><P>
<FORM><INPUT TYPE=button VALUE=Back
ONCLICK="window.history.back()"></FORM>
</BODY></HTML>
Tab (\t)__str
special [\n\n] string
'''注意:特殊字符:制表符 \t 换行符 \n输出:<HTML><HEAD><TITLE>
Friends CGI Demo</TITLE></HEAD>
<BODY><H3>ERROR</H3>
<B>%s</B><P>
<FORM><INPUT TYPE=button VALUE=Back
ONCLICK="window.history.back()"></FORM>
</BODY></HTML>
Tab ( )__str
special [] string
2. 访问字符串
可用*下标*的形式访问字符串中的字符。
#!/usr/bin/python3
# _*_ coding:UTF-8 _*_str1 = 'hello'
str2 = "world" # 利用下标
print ("str1[1]:", str1[1]) # str1[1]: e# [左边界:右边界] 可以取到下标1,取不到4
print ("str2[1:4]:", str2[1:4]) # str2[1:4]: orl# [左边界:右边界:步数] 隔一定的步数,取一次值
print ("str2[0:5:2]:", str2[0:5:2]) # str2[0:5:2]: wrd输出:str1[1]: e
str2[1:4]: orl
str2[0:5:2]: wrd
3. 转义字符
在字符串中使用特殊字符时,前面加反斜杠(\)转义字符。
转义字符 | 描述 |
---|---|
(在行尾时) | 续行符 |
\ | 反斜杠符号 |
' | 单引号 |
" | 双引号 |
\a | 响铃 |
\b | 退格(Backspace) |
\000 | 空 |
\v | 纵向制表符 |
\t | 横向制表符 |
\n | 换行 |
\r | 回车 |
\f | 换页 |
\oyy | 八进制数 |
\xyy | 十六进制数 |
4. 特殊的操作符
- 字符串连接: +
"hello" + "world"
输出"helloworld"
- 重复输出字符串: *
"hello" * 3
输出:"hellohellohello"
- 成员运算符: in 和 not in
'e' in "hello" : 输出: True 'a' in "hello" 输出: False
- 输出原始字符串: r/R
print r("\n") 或 print R("\n")
输出:\n
- 输出Unicode 字符串:u
print (u'Hello\u0020World !')
输出:u'Hello World !'
- 格式化字符串: %
print ("I am %s, i'm %d !" % ("xiaoming",18))
输出:I am xiaoming, i'm 18 !**注意点**
从左到右依次查看 "I am %s, i'm %d !" % ("xiaoming",18)
%s、%d 为字符串格式化符号
% 格式符 注意:<< 后面与对应值有个空格隔开>>
("xiaoming",18) 与%s,%d一一对应的值- python字符串格式化符号:%s 字符串 (采用str()的显示)%r 字符串 (采用repr()的显示)%c 单个字符%b 二进制整数%d 十进制整数%i 十进制整数%o 八进制整数%x 十六进制整数%e 指数 (基底写为e)%E 指数 (基底写为E)%f 浮点数%F 浮点数,与上相同%g 指数(e)或浮点数 (根据显示长度)%G 指数(E)或浮点数 (根据显示长度)%% 字符"%"
- 附:格式化操作符的一些辅助指令:
* 定义宽度或者小数点精度- 用做左对齐+ 在正数前面显示加号( + )<sp> 在正数前面显示空格# 在八进制数前面显示零('0'),在十六进制前面显示'0x'或者'0X'(取决于用的是'x'还是'X')0 显示的数字前面填充'0'而不是默认的空格(var) 映射变量(字典参数)m.n m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话)例:print(">|%+10x|<" % 10)print(">|%04d|<" % 5)print(">|%6.3f|<" % 2.3)print(">|%.*f|<" % (4, 1.2))输出:(>| |< 仅作分割线)>| +a|<>|0005|<>| 2.300|<>|1.2000|<
- format 函数 详细 ( 转载自CSDN "踏实_进取")
Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。基本语法是通过 {} 和 : 来代替以前的 % 。format 函数可以接受不限个参数,位置可以不按顺序。>>>"{} {}".format("hello", "world") # 不设置指定位置,按默认顺序'hello world'>>> "{0} {1}".format("hello", "world") # 设置指定位置'hello world'>>> "{1} {0} {1}".format("hello", "world") # 设置指定位置'world hello world'
5. 常用方法 可参考这里
- str.strip() str.lstrip() str.rstrip(',') # 去空格及特殊符号
- str.split() # 分割字符串,返回字串串列表,默认以空格分割
- len(str) # 返回字符串长度
- str.count() # 返回该字符串中某个子串出现的次数
- str.find() # 返回某个子串出现在该字符串的起始位置
- str.lower() # 将该字符串全部转化为小写
- str.upper() # 转为大写
- str.swapcase() # 大小写互换
- str.capitalize() # 首字母大写
- int(str) # 转成整型
- float(str) # 转成浮点型
- ord() # char->ascii
- chr() # ascii->char
6. string 模块 详见 (2.x)
字符串内建支持的方法,所有的方法都包含了对Unicode的支持,有一些甚至是专门用于Unicode的。
- string.capitalize()
把字符串的第一个字符大写 - string.strip([obj])
在 string 上执行 lstrip()和 rstrip() - string.count(str, beg=0, end=len(string))
返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数 - string.decode(encoding='UTF-8', errors='strict')
以 encoding 指定的编码格式解码 string,如果出错默认报一个 ValueError 的 异 常 , 除非 errors 指 定 的 是 'ignore' 或 者'replace' string.encode(encoding='UTF-8', errors='strict')
以 encoding 指定的编码格式编码 string,如果出错默认报一个ValueError 的异常,除非 errors 指定的是'ignore'或者'replace'- string.endswith(obj, beg=0, end=len(string))
检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False. - string.expandtabs(tabsize=8)
把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8。
string.find(str, beg=0, end=len(string))
检测 str 是否包含在 string 中,如果 beg 和 end 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回-1 - string.format()
格式化字符串 - string.index(str, beg=0, end=len(string))
跟find()方法一样,只不过如果str不在 string中会报一个异常. - string.isalnum()
如果 string 至少有一个字符并且所有字符都是字母或数字则返
回 True,否则返回 False - string.isalpha()
如果 string 至少有一个字符并且所有字符都是字母则返回 True,
否则返回 False - string.isdecimal()
如果 string 只包含十进制数字则返回 True 否则返回 False. - string.isdigit()
如果 string 只包含数字则返回 True 否则返回 False. - string.islower()
如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False - string.isnumeric()
如果 string 中只包含数字字符,则返回 True,否则返回 False - string.isspace()
如果 string 中只包含空格,则返回 True,否则返回 False. - string.lower()
转换 string 中所有大写字符为小写. - string.lstrip()
截掉 string 左边的空格 - string.maketrans(intab, outtab])
maketrans() 方法用于创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。 - string.istitle()
如果 string 是标题化的(见 title())则返回 True,否则返回 False - min(str)
返回字符串 str 中最小的字母。 - max(str)
返回字符串 str 中最大的字母。 - string.isupper()
如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False - string.swapcase()
翻转 string 中的大小写 - string.title()
返回"标题化"的 string,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle()) - string.translate(str, del="")
根据 str 给出的表(包含 256 个字符)转换 string 的字符,
要过滤掉的字符放到 del 参数中 - string.upper()
转换 string 中的小写字母为大写 - string.zfill(width)
返回长度为 width 的字符串,原字符串 string 右对齐,前面填充0 - string.isdecimal()
isdecimal()方法检查字符串是否只包含十进制字符。这种方法只存在于unicode对象。 - string.join(seq)
以 string 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串 - string.ljust(width)
返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串 - string.partition(str)
有点像 find()和 split()的结合体,从 str 出现的第一个位置起,把 字 符 串 string 分 成 一 个 3 元 素 的 元 组 (string_pre_str,str,string_post_str),如果 string 中不包含str 则 string_pre_str == string. - string.replace(str1, str2, num=string.count(str1))
把 string 中的 str1 替换成 str2,如果 num 指定,则替换不超过 num 次. - string.rfind(str, beg=0,end=len(string) )
类似于 find()函数,不过是从右边开始查找. - string.rindex( str, beg=0,end=len(string))
类似于 index(),不过是从右边开始. - string.rjust(width)
返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串 - string.rpartition(str)
类似于 partition()函数,不过是从右边开始查找. - string.rstrip()
删除 string 字符串末尾的空格. - string.split(str="", num=string.count(str))
以 str 为分隔符切片 string,如果 num有指定值,则仅分隔 num 个子字符串 - string.splitlines([keepends])
按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。 - string.startswith(obj, beg=0,end=len(string))
检查字符串是否是以 obj 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,
则在指定范围内检查. string.center(width)
返回一个原字符串居中,并使用空格填充至长度 width 的新字符串
7.正则表达式 指南 ( 转载自博客园 "AstralWind" ) 官方文档
常用函数:(re模块)
- compile() # 将正则表达式字符串编译成正则re对象
- search() # 在目标字符串中匹配正则表达式
- match() # 从目标字符串第一个字符开始匹配正则表达
search和match匹配成功返回MatchObject对象,失败返回None
>>> p = re.compile('abc')>>> p.search('zabcy')<_sre.SRE_Match object at 0x2a95659030>不先编译成正则re对象也是可以的,上例也可以为:>>> re.search('abc','xabcy')<_sre.SRE_Match object at 0x2a95659098>compile还可加些标志位,例如:re.I(re.IGNORECASE)忽略大小写>>> p = re.compile('abc')>>> print p.search('xAbCy')None>>> p = re.compile('abc',re.I)>>> print p.search('xAbCy')<_sre.SRE_Match object at 0x2a9565a098>search和match区别见下例:>>> p = re.compile('abc')>>> print p.search('xxxabcyyy')
<_sre.SRE_Match object at 0x2a95659030>>>> print p.match('xxxabcyyy')None>>> print p.match('abcyyy')<_sre.SRE_Match object at 0x2a95659098>
- split() # 类似字符串内置函数split()
区别在于:内置split()以确定字符串分割,而正则split函数以正则表达式分割字符
例如:以空格(1个或者多个空格)分割:>>> p.split('a b c d')
['a', 'b', 'c', 'd']而内置split分割的结果为:>>> 'a b c d'.split(' ')
['a', 'b', '', '', 'c', '', 'd']
- findall() # 返回目标字符串中匹配正则表达式中所有子串列表
>>> p = re.compile('^([a-z]{2}):([1-9]{3}):(.+)$')>>> p.findall('as:123:a12')
[('as', '123', 'a12')]上例中正则表达式的子串为3个用括弧括起的,分别为:'[a-z]{2}'、'[1-9]{3}'、'.+', 分别被as、123、a12匹配,注意此返回的是匹配字符串元组的一维列表。
转载于:https://www.cnblogs.com/darksouls/p/8185791.html
Python入门 —— 04字符串解析相关推荐
- python程序实例讲解_python入门编程实例 python入门编程实例解析
python入门编程实例 python入门编程实例解析 python入门编程实例及解析: 题目:有1.2.3.4四个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 程序分析:可填在百位.十 ...
- 【李刚-21天通关Python】第一章:Python入门与字符串
[李刚-21天通关Python]第一章:Python入门与字符串 第一章:Python入门与字符串 数据类型 字符串 运算符 实操:简易计算器 & 进制转换 章节分篇链接: [李刚-21天通关 ...
- Python入门程序 字符串应用(学号判断程序、密码破解程序、身份证的秘密)
Python入门程序 字符串应用(学号判断程序.密码破解程序.身份证的秘密) 没想到学校会在大二同时学习Java的的时候一起学Python语言,在这写一些平时的python编程作业. 就从字符串的应用 ...
- Python 入门之字符串处理
第1关:字符串的拼接:名字的组成 任务描述 本关任务是将两个不同的字符串,拼接形成一个字符串,并将新字符串输出来.字符串或串(String)是由数字.字母.下划线组成的一串字符.在 Python 中, ...
- python入门之字符串_03
# 字符串 -------笔记------ # 1.字符串的特性:不可修改,有序的 # 2.字符串的定义: # 双引号和单引号都可以定义 # 三双引号和三单引号都可以定义 # 字符串里面有空格也算是字 ...
- python入门之字符串处理_Python基础之字符串操作,格式化。
Python字符串现在感觉在日常的使用中不多,但仔细看了书以后一些小技巧还是很方便的,我这里简单的记录下. 插入一个超搞逼格的: .format_map(其实这个是字符串的方法.....) In [8 ...
- python入门——数字+字符串
数字 1.python数字类型转换 只需要将数据类型作为函数名即可 int(x) #将x转换为一个整数 float(x) #将x转换到一个浮点数 complex(x)#将x转换到一个复数,实部为X,虚 ...
- python入门之字符串处理_python基础教程之python字符串处理方法|python基础教程|python入门|python教程...
https://www.xin3721.com/eschool/pythonxin3721/ 字符和字符串可以用来相加来组合成一个字符串输出: 字符或字符串复制输出. 二.Extract &S ...
- python入门之字符串索引,切片
1.什么是索引 字符串的索引:索引(字符串里面每一个字符都有下标(索引),并且是从0开始) 正序:从头开始数 反序:从尾开始数 字符串怎么取值:根据索引取值 取值公式:字符串名[索引值 字符串索引,表 ...
最新文章
- Spring IOC注入Map接口小技巧
- 使用 Docker 部署 Spring Boot 项目
- SonarQube代码质量管理工具的安装(Linux)
- 第一篇:容易遗忘的“枚举”
- oracle数据库图书,基于oracle数据库,创建图书表(一)
- java 上界和下界,Java 泛型上下界(上下限)
- 动态文本_(302期)【动态】|| 立足相同文本,描绘不同风景 ——工作室开展“同课异构”活动...
- Spark Runtime概述
- python中创建类的作用_Python中类的创建与使用详解
- 1258 近义词句子
- ESP32 系统篇: 优化系统启动时间
- 【教程】如何批量获取图片信息,尺寸、大小、路径、文件名,然后导出表格或者txt的文本,下面教你使用方法
- 互联网晚报 |11/23星期三 | 京东高管降薪10%至20%;75%未成年每周游戏少于3小时;惠普宣布未来三年裁员4K-6K人...
- C语言用数组编程矩阵,二维数组—矩阵求和(C语言)
- 计算机运行加减乘除哪个最慢,计算机算加减乘除的时间对比
- 使用python编写多普勒频移函数,绘制多普勒频移随速度变化的曲线,给出代码并举例,代码以markdown格式给出...
- 天气预报数据保存APP的制作
- 马里兰大学计算机世界排名,2019上海软科世界一流学科排名计算机科学与工程专业排名马里兰大学帕克分校排名第38...
- 一段的冷笑话已经很直白的说明了三方的关系
- 10.COM进程外组件和列集、散集