day4_字符串

Python3字符串

Python访问字符串中的值

Python中的字符串用单引号(')或双引号(")括起来,同时使用反斜杠()转义特殊字符。
字符串中的每一个字符都会对应一个唯一的下标(索引)用来表示字符在字符串中的位置。
下标是从0开始一次增加的, 0对应的是第一个字符(0 ~ 字符串长度-1)
可以是从-1开始依次减小,-1代表最后一个字符(-1 ~ -字符串长度)

获取字符串中的单个字符的语法格式如下:

<font color=#00aa00>字符串变量[下标]</font>
注意:
下标的返回是0~字符串长度-1
字符串 - 只要结果是字符串的表达式都可以,例如:字符串字面量, 字符串变量
[] - 固定写法
下标 - 需要获取的字符对应的下标; 注意,这儿的下标不能越界

result = 'how are you!'[0]    # 获取字符串'how are you!'中下标是0的字符,并且赋给变量result
print(result)

print('how are you!'[-4])   # y

字符串的截取的语法格式如下:

方法一:
<font color=#00aa00> 字符串变量[头下标:尾下标] </font>
从开始下标开始,获取到结束下标前为止。每次下标值加上步长去获取下一个
说明:
字符串 - 只要结果是字符串的表达式都可以,例如:字符串字面量, 字符串变量
[] - 固定写法
开始下标、结束下标 - 下标值(这儿的下标可以越界)
步长 - 必须是整数(正数和负数都行); 如果步长是正数,是从开始下标开始从前往后获取;如果步长是负数,是从开始下标开始从后往前获取;

str1 = 'hello python!'
print('结果1:', str1[0:-1:2])   # 从前往后取
print('结果2:', str1[-1:0:-2])    # 从后往前取

print('结果3:', str1[-1:-100:-1])   # 结束下标越界
print('结果4:', str1[100: -100: -1])  # 下标越界

方法二:
方法二:(省略步长)
字符串[开始下标:结束下标] - 步长是1;从开始下标开始到结束下标前为止,一个一个的取!

print('when i was young!'[2:6])

方法三
方法三:(省略开始下标和结束下标)
a.省略开始下标
字符串[:结束下标:步长] - 当步长是正数,从字符串的第一个字符开始取到结束下标前为止;当步长是负数,从字符串的最后一个字符开始取到结束下标前为止.
b.省略结束下标
字符串[开始下标::步长] - 当步长是正数,从开始下标开始取到字符串最后一个字符为止;当步长是负数,从开始下标开始取到字符串的第一个字符为止

str3 = 'when i was young!'
print(str3[:6], str3[:6:-1])
print(str3[2:], str3[2::-1])
print(str3[:])
print(str3[::-1])    # 让字符串倒序
print(str3)

Python字符串运算符

下表实例变量a值为字符串 "Hello",b变量值为 "Python":

操作符 描述 实例
+ 字符串连接 a + b 输出结果: HelloPython
* 重复输出字符串 a*2 输出结果:HelloHello
[] 通过索引获取字符串中字符 a[1] 输出结果 e
[ : ] 截取字符串中的一部分 a[1:4] 输出结果 ell
in 成员运算符 - 如果字符串中包含给定的字符返回 True 'H' in a 输出结果 1
not in 成员运算符 - 如果字符串中不包含给定的字符返回 True 'M' not in a 输出结果 1
r/R 原始字符串 - 原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。 原始字符串除在字符串的第一个引号前加上字母 r(可以大小写)以外,与普通字符串有着几乎完全相同的语法。 print( r'\n' )print( R'\n' )
% 格式字符串
a = 'Hello'
b = 'Python'  

print(a + ' ' + b)   # 打印:Hello Python  

str1 = a * 3
print(str1)  # 打印:HelloHelloHello  

re = 'He' in a
print(re)   # 打印:True  

re = 'He' not in a
print(re)   # 打印: False  

比较是否相等
==, != 可以判断两个字符串是否相等或者不相等
字符比较大小:
从第一个字符开始依次往后找,找到第一个不相等的字符对,判断它们的编码值的大小,谁的编码值大,对应的字符串就大;不会再往后比较了!
应用:
1.判断是否是小写字母: 'a'<=char<='z' <===> char>='a' and char<='z'
2.判断是否是大写字母: 'A'<=char<='Z'
3.判断是否是字母: 'a' <= char <= 'z' or 'A' <= char <= 'Z'

print('abc' == 'abc')    # True
print('abc' == 'cba')    # False
print('abc' != 'abc')    # False
print('abdcb' > 'abczde')   #True

运用:判断一个字符串中第3个字符是否是字母

str1 = 'sh是23.ssy23'
char = str1[2]     # 将第3个字符取出
print('是否是字母:', 'a' <= char <= 'z' or 'A' <= char <= 'Z')
print('是否是中文:', '\u4e00' <= char <= '\u9fa5')

Python字符串格式化

Python 支持格式化字符串的输出 。尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符 %s 的字符串中。
在字符串中通过格式占位符来代替字符串中变化的部分,然后在后面通过数据或者变量确定变化
语法:
包含占位符的字符串 % (值1, 值2, 值3...)

input_str = input('输入一个字符串:')
message = '%s的长度是%d, 最后一个字符是%c' %(input_str, len(input_str), input_str[-1])
print(message)

python字符串格式化符号:

符号 描述
%c 格式化字符及其ASCII码
%s 格式化字符串
%d 格式化整数
%u 格式化无符号整型
%o 格式化无符号八进制数
%x 格式化无符号十六进制数
%X 格式化无符号十六进制数(大写)
%f 格式化浮点数字,可指定小数点后的精度
%e 用科学计数法格式化浮点数
%E 作用同%e,用科学计数法格式化浮点数
%g %f和%e的简写
%G %f 和 %E 的简写

--

类型转换

1.基本语法
语法:
类型名(数据) - 将指定数据转换成指定类型

说明:
类型名 - 任何python支持的,或者自定的类型都可以
数据 - 需要转换的对象(类型不同要求可能不一样)

2.转换实例
int(数据) -> 将其他数据转换成整型

a = int(-10.90)   # 所有浮点数可以转换成整数,直接保留整数部分
b = int(False)    # 所有布尔可以转化成整数, True -> 1; False -> 0
c = int('-120')   # 只有去掉字符串的引号后本身就是一个整数的字符串才能转换成整型
print(a, b, c)

float(数据) -> 将其他数据转换成浮点型

a = float(100)     # 所有整数都可以转换成浮点数,在后面加.0
b = float(True)    # 所有布尔可以转化成浮点数, True -> 1.0; False -> 0.0
c = float('12.9')  # 去掉引号后本身就是一个数字的字符串能转换成浮点型
print(a, b, c)

bool(数据) -> 将其他类型转换成布尔

a = bool(0)
b = bool(-0.0)
c = bool('')
d = bool([])
e = bool({})
f = bool(None)
print(a, b, c, d, e, f)
  • python中所有的数据都可以转换成布尔
  • 所有为空为0的值都会转换成False,其他都是True
    str(数据) -> 将其他数据转换成字符串
a = str(100)
print(a)
print('abc'+str(100))
  • python中所有的数据都可以转换成字符串,而且转换的时候就是单纯的在最外面加引号

Python 的字符串内建函数

Python 的字符串常用内建函数如下:

序号 方法 描述
1 capitalize() 将字符串的第一个字符转换为大写
str2 = 'abc'
print(str2.capitalize())   # Abc
序号 方法 描述
2 center(width, fillchar) 返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格。
str1 = 'abc'
print(str1.center(7, '0'))
序号 方法 描述
3 count(str) 返回 str 在 string 里面出现的次数
print('abc and hight a'.count('abc'))
序号 方法 描述
4 bytes.decode(encoding="utf-8", errors="strict") Python3 中没有 decode 方法,但我们可以使用 bytes 对象的 decode() 方法来解码给定的 bytes 对象,这个 bytes 对象可以由 str.encode() 来编码返回。
str1 = '千峰'
str1_new = str1.encode(encoding='UTF-8')  # \xe5\x8d\x83\xe5\xb3\xb0'
print(str1_new)
print(str1_new.decode("UTF-8"))
序号 方法 描述
5 encode(encoding='UTF-8',errors='strict') 以 encoding 指定的编码格式编码字符串,如果出错默认报一个ValueError 的异常,除非 errors 指定的是'ignore'或者'replace'
str1 = '千峰'
str1_new = str1.encode(encoding='UTF-8')  # \xe5\x8d\x83\xe5\xb3\xb0'
print(str1_new)
序号 方法 描述
6 endswith(suffix) 检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False.
str3 = '床前明月光'
print(str3.endswith('光'))      # True
序号 方法 描述
7 expandtabs(tabsize=8) 把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8 。
str1 = '\tabc'
print(len(str1))
print(len(str1.expandtabs(tabsize=8)))
序号 方法 描述
8 find(str, beg=0 end=len(string)) 检测 str 是否包含在字符串中,如果指定范围 beg 和 end ,则检查是否包含在指定范围内,如果包含返回开始的索引值,否则返回-1
str1 = "this is string example"
str2 = "exam"
print(str1.find(str2, len(str2)))

序号 方法 描述
9 index(str, beg=0, end=len(string)) 跟find()方法一样,只不过如果str不在字符串中会报一个异常.
str1 = "this is string example....wow!!!"
str2 = "exam"
print(str1.index(str2, len(str2)))
序号 方法 描述
10 isalnum() 如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False
str1 = "this is string example....wow!!!"
print(str2.isalnum())        # False
序号 方法 描述
11 isalpha() 如果字符串至少有一个字符并且所有字符都是字母则返回 True, 否则返回 False
str2 = "exam"
print(str2.isalpha())     #True
序号 方法 描述
12 isdigit() 如果字符串只包含数字则返回 True 否则返回 False..
str1 = '12345'
str2 = 'abc123'
print(str1.isdigit(), str2.isdigit())
序号 方法 描述
13 islower() 如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False
str1 = 'asd123'
str2 = 'Asd123'
str3 = 'ASD123'
print(str1.islower())       # True
print(str2.islower())       # False
print(str3.islower())       # False
序号 方法 描述
14 isnumeric() 如果字符串中只包含数字字符,则返回 True,否则返回 False(中文数字也可以)
str1 = '123'
str2 = 'as123'
str3 = 'asd'
print(str1.isnumeric())     # True
print(str2.isnumeric())     # False
print(str3.isnumeric())     # False
序号 方法 描述
15 isspace() 如果字符串中只包含空白,则返回 True,否则返回 False.
str1 = ' '
str2 = 'ase123'
print(str1.isspace())
print(str2.isspace())
序号 方法 描述
16 istitle() 如果字符串是标题化的(见 title())则返回 True,否则返回 False
str1 = 'Hello World'
print(str1.istitle())            # True
序号 方法 描述
17 isupper() 如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False
str1 = 'H11111 P22222'
str2 = 'hello world'
print(str1.isupper())
print(str2.isupper())
序号 方法 描述
18 join(seq) 以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串
new_str = '**'.join('abc')
print(new_str)
序号 方法 描述
19 len(string) 返回字符串长度
print(len('abc'))
序号 方法 描述
20 ljust(width[, fillchar]) 返回一个原字符串左对齐,并使用 fillchar 填充至长度 width 的新字符串,fillchar 默认为空格。
print(str1.ljust(7, '*'))
序号 方法 描述
21 lower() 转换字符串中所有大写字符为小写.
str2 = "EXAM"
print(str2.lower())
序号 方法 描述
22 lstrip() 截掉字符串左边的空格或指定字符。
str1 = 'a  asd1'
print(str1)                  # a  asd1
print(str1.lstrip('a'))      #   asd1
序号 方法 描述
23 maketrans() 创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。
序号 方法 描述
24 max(str) 返回字符串 str 中最大的字母。
str1 = 'abcd'
print(max(str1))       # d
序号 方法 描述
25 min(str) 返回字符串 str 中最小的字母。
str1 = 'abcd'
print(min(str1))      # a
序号 方法 描述
26 replace(old, new [, max]) 把 将字符串中的 str1 替换成 str2,如果 max 指定,则替换不超过 max 次。
str1 = 'HELLO world HELLO python'
print(str1.replace('HELLO', 'hello', 2))
print(str1.replace('HELLO', 'hello', 1))
序号 方法 描述
27 rfind(str, beg=0,end=len(string)) 类似于 find()函数,不过是从右边开始查找.
str1 = "this is string example"
str2 = "exam"
print(str1.rfind(str2, len(str2)))
序号 方法 描述
28 rindex( str, beg=0, end=len(string)) 类似于 index(),不过是从右边开始.
str1 = "this is string example....wow!!!"
str2 = "abc"
print(str1.rindex(str2, len(str2)))           # ValueError: substring not found
序号 方法 描述
29 rjust(width,[, fillchar]) 返回一个原字符串右对齐,并使用fillchar(默认空格)填充至长度 width 的新字符串
print(str1.ljust(7, '*'))
序号 方法 描述
30 rstrip() 删除字符串字符串末尾的空格.
str1 = 'abc123   '
print(str1, len(str1))                                    # abc123    9
print(str1.rstrip(), len(str1.rstrip()))             # abc123 6
序号 方法 描述
31 split(str="", num=string.count(str)) num=string.count(str)) 以 str 为分隔符截取字符串,如果 num 有指定值,则仅截取 num 个子字符串
print('12,89,90'.split(','))
序号 方法 描述
32 splitlines([keepends]) 按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。
str = '11\n222\n3333\n'
print(str.splitlines(True))              # ['11\n', '222\n', '3333\n']
print(str.splitlines(False))            # ['11', '222', '3333']
序号 方法 描述
33 startswith(str, beg=0,end=len(string)) 检查字符串是否是以 obj 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查。
str1 = 'today is a good day'
print(str1.startswith('today'))              # True
print(str1.startswith('hello'))               # False
序号 方法 描述
34 strip([chars]) 在字符串上执行 lstrip()和 rstrip()
str = '11111234511111'
print(str.strip('1'))               # 2345
print(str.lstrip('1'))              # 234511111
print(str.rstrip('1'))             # 111112345
序号 方法 描述
35 swapcase() 将字符串中大写转换为小写,小写转换为大写
str1 = 'Hello World'
print(str1.swapcase())          # hELLO wORLD
序号 方法 描述
36 title() 返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle())
str1 = 'hello world'
print(str1.title())            # Hello World
序号 方法 描述
37 translate(table, deletechars="") 根据 str 给出的表(包含 256 个字符)转换 string 的字符, 要过滤掉的字符放到 deletechars 参数中
序号 方法 描述
38 upper() 转换字符串中的小写字母为大写
str2 = "exam"
print(str2.upper())
序号 方法 描述
39 zfill (width) 返回长度为 width 的字符串,原字符串右对齐,前面填充0
num = input('请输入顺序号:')
# 生成序号后面变化的部分
new_num = num.zfill(4)
study_num = 'py1809'+new_num
print(study_num)
序号 方法 描述
40 isdecimal() 检查字符串是否只包含十进制字符,如果是返回 true,否则返回 false。
str1 = 'abc123'
str2 = '12345'
print(str1.isdecimal())      # False
print(str2.isdecimal())      # True
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,348评论 6 491
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,122评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,936评论 0 347
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,427评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,467评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,785评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,931评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,696评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,141评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,483评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,625评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,291评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,892评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,741评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,977评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,324评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,492评论 2 348

推荐阅读更多精彩内容

  • 一.认识字符串 什么是字符串(str)字符串是python中一种常用的有序但是不可变的容器类的数据类型,可以同时存...
    2ez4ddf阅读 472评论 0 0
  • 字符串 1.什么是字符串 序列:有序,不可变的。用单引号或者双引号括起来的任意字符(集)。 2.字符串中的字符 a...
    落幕丶丶阅读 796评论 0 0
  • 1、获取单个字符: 字符串中的每一个字符都会对应一个唯一的下标(索引)用来表示字符在字符串中的位置(下标是从0开始...
    为了生活的苟且阅读 99评论 0 0
  • 字符串知识点补充: 字符串又叫字符集。 空串:"",''。 空格字符串:" ",' '。 \t: tab键的长度是...
    圣咸鱼阅读 127评论 0 0
  • 2018.7.28周六多云 亲子日记第18天 今日因教授来坐诊,早晨早起洗漱吃饭,叫大宝起床去上作文课,每天晚上睡...
    茗菲阅读 174评论 0 0