s = 'apple'
#索引
s[0]
for i in s:
print(i,end=" ")
for i in range(len(s)):
print(s[-(i+1)],end="") #反转列表,用索引
for i in reversed(s): #反转列表 用函数
print(i,end="")
#切片索引,类似列表
food = "apple pie"
food[0:5]
food[0:5:2]
food[::2]
food[1::2]
food[::-1] #反转字符串 还可以用函数 reversed(s)
#一个应用
def get_ext(fname):
"""
返回文件的扩展名
"""
dot = fname.rfind(".") #获得.的索引(从右边开始找)
if dot == -1:
return ''
else:
return fname[(dot+1):]
get_ext("apple.avi")
这一节参考了博客.
Python中有join()和os.path.join()两个函数,具体作用如下:
join(): 连接字符串数组。将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串
os.path.join(): 将多个路径组合后返回
join()函数
语法: ‘sep’.join(seq)
参数说明
sep:分隔符。可以为空
seq:要连接的元素序列、字符串、元组、字典
上面的语法即:以sep作为分隔符,将seq所有的元素合并成一个新的字符串
返回值:返回一个以分隔符sep连接各个元素后生成的字符串.
os.path.join()函数
语法: os.path.join(path1[,path2[,…]])
返回值:将多个路径组合后返回
注:第一个绝对路径之前的参数将被忽略.
#字符串拼接,合并
str1 = "Hello, ";str2 = "LL!"
str1 + str2
#'Hello, LL!'
#对列表进行操作(分别使用' '与':'作为分隔符)
seq1 = ['hello','beautiful','gril','ll']
print (' '.join(seq1))
#hello good boy doiido
print (':'.join(seq1))
#hello:good:boy:doiido
#对字符串进行操作
seq2 = "hello beautiful gril ll"
print (':'.join(seq2))
#h:e:l:l:o: :b:e:a:u:t:i:f:u:l: :g:r:i:l: :l:l
#对元组进行操作
seq3 = ('hello','beautiful','gril','ll')
print(':'.join(seq3))
#hello:beautiful:gril:ll
#对字典进行操作,实际上是对字典的键进行操作
seq4 = {'hello':1,'beautiful':2,'gril':3,'ll':4}
print ('-'.join(seq4))
#hello-beautiful-gril-ll
#合并目录
import os
os.path.join('/hello/','deer/gril/','ll')
#'/hello/deer/gril/ll'
str1 = "love you!"
str1*3 #'love you!love you!love you!'
li = ['I','love','you']
li*3 #列表长度扩展为9.
tup = ('I','love','you')
tup*3 #元组长度扩展为9.
dict1 = {'I':5,"love":2,'you':0}
dict1*3 #注意字典不是序列,不能乘。
为了检查一个值是否在序列中,可以使用in运算符。该运算符检查某个条件是否为真,若为真返回True,否则返回False。
#成员资格 in
s = "你怎么那么好看?"
"你" in s
"我" in s
li = list(s)
"你" in li
"我" in li
tup = tuple(s)
"你" in tup
"我" in tup
len、min和max都是内置函数。
C语言使用函数printf()格式化输出结果,Python也提供了类似功能。
Python将若干值插入带有“%”标记的字符串中,从而可以按照指定格式输出字符串。
语法:
“%s” % str1
“%s %s” % (str1, str2)
#字符串格式化
s = 'Version'
n = 1.0
print("%s" %s) # %s 字符串
print("%s %d" %(s,n)) # %d 整型
print("%s %.1f" %(s,n)) # %f 浮点型
'''
输出:
Version
Version 1
Version 1.0
'''
#带精度的格式化
n = 3.1415926
print("%f" %n) #3.141593 直接输出
print("%.2f" %n) #3.14 保留2位小数
print("%.3f" %n) #3.142 保留3位小数
from math import pi
print('%010.2f' %pi) #表示字段宽度为10(包括小数点),精度为2,空位用0填充。
print('%-10.2f' %pi)
print('%10.2f' %pi) #用(-)号来左对齐数值。
print(('%+5d' %10)+'\n'+('%+5d' %-110)) #(+)号标示出 符号
'''
0000003.14
3.14
3.14
+10
-110
'''
#转义字符的应用
print("\' and \" are quotes")
print("\\ must be written \\\\") #"\\\\",第1,3反斜线表示转义字符。
print("one\ntwo\nthree")
print("hello\tworld\n")
print(r"hello\tworld\n") #加个r,可以忽略转义字符的作用,直接输出原始内容。
print(len("\\")) #计算字符长度时,不包括转义字符"\"
print(len("a\nb\nc"))
'''
输出:
' and " are quotes
\ must be written \\
one
two
three
hello world
hello\tworld\n
1
5
'''
用于检测字符串是否为特定格式的函数,它们组成了一个最大的字符串函数组。
测试函数都返回True或False,因此也称为布尔函数或谓词。
s = 'abcdefg hhh'
#字符串测试函数 startswith endswith.....
s.startswith("b") #是否以"b"开头
s.startswith("abc")
s.isupper()
#查找函数应用
str1 = "I love you"
print(str1.find("o"))
print(str1.rfind("o"))
print(str1.index("o"))
print(str1.rindex("o"))
print(str1.find("dog"))
print(str1.index("dog"))
'''
3
8
3
8
-1
Traceback (most recent call last):
File "", line 6, in
print(str1.index("dog"))
ValueError: substring not found
'''
Python字符串自带了两个替换函数,如下表所示
注意:使用替换函数可轻松地删除字符串中的子串。
#字符串替换
s = "up, up and away"
s1 = "up,\tup\tand\taway"
print(s)
print(s.replace("up", "down"))
print(s.replace('up','')) #直接删掉了'up'
print(s1)
print(s1.expandtabs(8))
print(s1.expandtabs(10))
Python可使用“+”连接不同的字符串。除此之外,还可以使用join函数(是split方法的逆方法)和reduce函数实现字符串的合并。
join函数的举例见2.3节。
使用reduce函数连接字符串
from functools import reduce
import operator
strs = ["Hello","world","hello","China!"]
operator.add(1,2) #加法1+2
reduce(operator.add, [1,2,3,4,5]) #(((1+2)+3)+4)+5
#用reduce实现对空字符串”的累计连接,每次连接列表strs中的一个元素
res = reduce(operator.add,strs,"")
print(res)
#例6-13:拆分字符串
url='www.google.com'
print(url.partition('.'))
print(url.rpartition('.'))
print(url.split('.'))
story='A long time ago, a princess ate an apple.'
print(story.split()) #默认以空格分隔
'''
('www', '.', 'google.com')
('www.google', '.', 'com')
['www', 'google', 'com']
['A', 'long', 'time', 'ago,', 'a', 'princess', 'ate', 'an', 'apple.']
'''
#例6-14:调用split()截取子串
sentence="Bob said: 1, 2, 3, 4, 5"
#根据空格获取子串,原串中含6个空格,返回7个子串
print(sentence.split())
#根据逗号取子串,原串中含4个逗号,返回5个子串
print(sentence.split(","))
#根据逗号个数分割字符串,将原串分割为4个子串
print(sentence.split(",",3))
print(sentence.split(",",2))
print(sentence.split(",",1))
'''
参考资料:liyumei老师的课件.