所有标准的序列操作对字符串都适用,但字符串是不可变的
字符串常量:
单引号:‘spa"m'
双引号:"spa'm"
三引号:'''...spam...''',"""...spam..."""
转义字符:"s\tp\na\om"
Raw字符串:r"C:\new\test.spm"
Unicode字符串:u'eggs\u0020spam
单双引号是一样的
单双引号可以互换,字符常量表达式可以用两个单引号或两个双引号来表示--两种形式同样有效返回相同类型的对象:
复制代码 代码如下:
> 'zxcvbn',"zxcvbn"
('zxcvbn', 'zxcvbn')
> #不适用转义字符就可以实现在一个字符串中包含其余种类 的引号
> 'knight"s',"knight's"
('knight"s', "knight's")
可以自动在任意的表达式中合并相邻的字符串常量,尽管也可以使用+操作符实现:
复制代码 代码如下:
> title="sdfsd"'dfg'"fgfd"
> title
'sdfsddfgfgfd'
字符串的格式化使用字符%来实现:
在%的左侧放置一个字符串,右侧放置希望格式化的值,可以使用一个值,也可以使用多个值的元组或字典
复制代码 代码如下:
> format="Hello. %s. %s enough for ya"
> values=('world','Hot')
> print format % values
Hello. world. Hot enough for ya"codetitle">复制代码 代码如下:
> print '''this is
a
very long
string'''
this is
a
very long
string
如果一行之中最后一个字符是反斜线,那么换行符本身就“转义”了,也就是被忽略了
复制代码 代码如下:
> print "hello.\
world!"
hello.world!
> #这个用法也适用表达式和语句
> 1+2+\
4+5
12
> print \
'hello.world'
hello.world
2、原始字符串
原始字符串以r开头,可以在原始字符串中放入任何字符,最后输出的字符串包含了转义所用的反斜线,但是不能在字符串结尾输入反斜线:
复制代码 代码如下:
> print \
'hello.world'
hello.world
> print r'Let\'s go!'
Let\'s go!
> print r'this is illegal\'
SyntaxError: EOL while scanning string literal
索引与分片
字符串的字符是通过索引来提取的,将获得在特定位置的一个字符的字符串。
Python偏移量是从0开始的,并比字符串的长度小1,还支持类似在字符串中使用负偏移这样的方法从序列中获取元素,负偏移认作是从结束处反向计数
当使用一对冒号分隔的偏移索引字符串这样的序列对象时,将获取从下边界直到但不包括上边界的所有元素
索引(s[i])获取特定偏移的元素:
第一个元素的偏移为0
负偏移索引意味着从最后或右边反向进行计数
s[0]获取第一个元素
s[-2]获取了倒数第二个元素
分片(s[i:j])提取对应的部分作为一个序列:
上边界并不包含在内
分片的边界默认为0和序列的长度,如果没有给出的话
s[1:3]获取从偏移为1的元素,直到但不包括偏移为3的元素
s[1:]获取了从偏移为1直到末尾之间的元素
s[:3]获取了从偏移为0直到但是不包括偏移为3之间的元素
s[:-1]获取了从偏移为0直到但是不包括最后一个元素之间的元素
s[:]获取了从偏移0到末尾之间的元素
复制代码 代码如下:
> s='spam'
> s[0],s[-2]
('s', 'a')
> s[1:3],s[1:],s[:-1]
('pa', 'pam', 'spa')
> s[0],s[-2]
('s', 'a')
扩展分片:第三个限制值
分片表达式增加了一个可选的第三个索引,用作步进X[I:J:K]表示:索引X对象中的元素,从偏移为I直到偏移为J-1,每隔K元素索引一次
复制代码 代码如下:
> s='abcdefghijklmnop'
> s[1:10:2]
'bdfhj'
> s[::2]
'acegikmo'
> s='hello'
> s[::-1]
'olleh'
> s[4:1:-1]
'oll'
字符串转换工具
复制代码 代码如下:
> '42'+1
Traceback (most recent call last):
File "<pyshell#40>", line 1, in <module>
'42'+1
TypeError: cannot concatenate 'str' and 'int' objects
> int('42'),str(42)
(42, '42')
> repr(42),'42'
('42', '42')
> s='42'
> i=1
> s+i
Traceback (most recent call last):
File "<pyshell#45>", line 1, in <module>
s+i
TypeError: cannot concatenate 'str' and 'int' objects
> int(s)+i
43
> s+str(i)
'421'
> #类似也可以把浮点数转换成字符串或把字符串转换成浮点数
> str(3.1415),float("1.3")
('3.1415', 1.3)
> text='1.23E-10'
> float(text)
1.23e-10
字符串代码转换
单个字符也可以通过将其传给内置的ord函数转换为其对应的ASCII码,chr函数则执行相反的操作:
复制代码 代码如下:
> ord('s')
115
> chr(115)
's'
字符串方法
字符串比列表的方法还要丰富很多,因为字符串从string模块中“继承”了很多方法,本篇文章只介绍一些特别有用的字符串方法
1、find
find方法可以在一个较长的字符串中查找一个子字符串,它返回子串所在位置的最左端索引,如果没有找到则返回-1
复制代码 代码如下:
> 'with a moo-moo here, and a moo-moo there'.find('moo')
7
> title="Monty Python's Flying Cirus"
> title.find('Monty')
0
> title.find('Python')
6
> title.find('Zirquss')
-1
这个方法可以接受可选的起始点和结束点参数:
复制代码 代码如下:
> subject='$$$ Get rich now!!! $$$'
> subject.find('$$$')
0
> subject.find('$$$',1)
20
> subject.find('!!!')
16
> subject.find('!!!',0,16)
-1
2、join
join方法是非常重要的字符串方法,它是split方法的逆方法,用来在队列中添加元素:
复制代码 代码如下:
> seq=[1,2,3,4,5]
> sep='+'
> sep.join(seq)
Traceback (most recent call last):
File "<pyshell#15>", line 1, in <module>
sep.join(seq)
TypeError: sequence item 0: expected string, int found
> seq=['1','2','3','4','5']
> sep.join(seq)
'1+2+3+4+5'
> dirs='','usr','bin','env'
> '/'.join(dirs)
'/usr/bin/env'
> print 'C:'+'\\'.join(dirs)
C:\usr\bin\env
3、lower
lower方法返回字符串的小写字母版
复制代码 代码如下:
> 'HDWUD HDJHS LKJDS'.lower()
'hdwud hdjhs lkjds'
4、replace
replace方法返回某字符串的所有匹配项均被替换后得到字符串
复制代码 代码如下:
> 'This is a test'.replace('is','eez')
'Theez eez a test'
5、split
它是join的逆方法,用来将字符串分割成序列
复制代码 代码如下:
> '1+2+3+4+5'.split('+')
['1', '2', '3', '4', '5']
> 'C:\usr\bin\env'.split('/')
['C:\\usr\x08in\\env']
> 'Using the default'.split()
['Using', 'the', 'default']
注意:如果不提供任何分隔符,程序会把所有的空格作为分隔符
6、strip
strip方法返回去除两侧(不包含内部)空格的字符串:
复制代码 代码如下:
> ' internal whitespace is kept '.strip()
'internal whitespace is kept'
也可指定需要去除的字符,将它们列为参数即可:
复制代码 代码如下:
> '*** SPAM * for * everyone!!! ***'.strip(' *!')
'SPAM * for * everyone'
注意:只会去除两侧的字符
7、translate
translate方法和replace方法一样,可以替换字符串中的某些部分,但是和前者不同的是,translate方法只处理单个字符
Python,入门,字符串
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
- 第五街的士高《印度激情版》3CD [WAV+CUE][2.4G]
- 三国志8重制版哪个武将智力高 三国志8重制版智力武将排行一览
- 三国志8重制版哪个武将好 三国志8重制版武将排行一览
- 三国志8重制版武将图像怎么保存 三国志8重制版武将图像设置方法
- 何方.1990-我不是那种人【林杰唱片】【WAV+CUE】
- 张惠妹.1999-妹力新世纪2CD【丰华】【WAV+CUE】
- 邓丽欣.2006-FANTASY【金牌大风】【WAV+CUE】
- 饭制《黑神话》蜘蛛四妹手办
- 《燕云十六声》回应跑路:年内公测版本完成95%
- 网友发现国内版《双城之战》第二季有删减:亲亲环节没了!
- 邓丽君2024-《漫步人生路》头版限量编号MQA-UHQCD[WAV+CUE]
- SergeProkofievplaysProkofiev[Dutton][FLAC+CUE]
- 永恒英文金曲精选4《TheBestOfEverlastingFavouritesVol.4》[WAV+CUE]
- 群星《国风超有戏 第9期》[320K/MP3][13.63MB]
- 群星《国风超有戏 第9期》[FLAC/分轨][72.56MB]