【第三章】Python基础之字符串str

【第三章】Python基础之字符串st

字符串str

  • 一个个字符组成的有序的序列,是字符的集合
  • 使用单引号、双引号、三引号引住的字符序列
  • 字符串是不可变对象,是字面常量

Python3起,字符串都是Unicode类型

初始化

s1 = 'string'
s2 = "string2"
s3 = '''this's a "String" '''
s4 = 'hello \n magedu.com'
s5 = r"hello \n magedu.com"
s6 = 'c:\windows\nt'
s7 = R"c:\windows\nt" 
s8 = 'c:\windows\\nt'
name = 'tom'; age = 20 # python代码写在一行,使用分号隔开,不推荐
s9 = f'{name}, {age}' # 3.6支持f前缀
sql = """select * from user where name='tom' """

r前缀:所有字符都是本来的意思,没有转义

f前缀:3.6开始,使用变量插值

索引

字符串是序列,支持下标访问。但不可变,不可以修改元素。

sql = "select * from user where name='tom'"

print(sql[4]) # 字符串'c'

sql[4] = 'o' # 不可以

#定义
x = 'adasda'


输入:for a in x:
    	print(a,type(a))

输出:a <class 'str'>
	 d <class 'str'>
	 a <class 'str'>
	 s <class 'str'>
	 d <class 'str'>
	 a <class 'str'>    

连接

  • +加号

    • 将2个字符串连接起来
    • 返回一个新的字符串
  • join方法

    • sep.join(iterable)
    • 使用指定字符串作为分隔符,将可迭代对象中字符串使用这个分隔符拼接起来
    • 可迭代对象必须是字符串
    • 返回一个新的字符串
x = 'ab'
x = x + 'cd'
print(','.join(x))
print('\t'.join(x))
print('\n'.join(x))
print('-'.join(range(5))) # 可以吗 答案:不可以


输入:x = 'ab'
	 x = x + 'cd'
	 x
输出:'abcd'


输入:"*".join('adasdsa')
输出:'a*d*a*s*d*s*a'



#map(str, range(5)) 第一个参数是一个函数(这里是 str,用于将整数转换为字符串),第二个参数是一个可迭代对象(这里是 range(5))

输入:print('-'.join(map(str,range(5))))
输出:0-1-2-3-4

字符查找

  • find(sub[, start[, end]]) -> int
    • 在指定的区间[start, end),从左至右,查找子串sub
    • 找到返回正索引,没找到返回-1
  • rfind(sub[, start[, end]]) -> int
    • 在指定的区间[start, end),从右至左,查找子串sub
    • 找到返回正索引,没找到返回-1
#定义字符串
x='abcdeabc'

输入:x.find('ab')
输出:0

输入:x.rfind('ab')
输出:5

输入:x.rfind('adb')
输出:-1

#会从索引1开始找ab
输入:x.find('ab',1),x.find('ab',5),find('ab',5,7)
输出:(5, 5, 5)


#前包后不包
输入:x.find('abc',4,7)
输出:-1

这两个方法只是找字符串的方向不同,返回值一样。找到第一个满足要求的子串立即返回。特别注意返
回值,找不到返回的是负数-1。
这两个方法效率高吗?要不要用?
这两个方法效率真不高,都是在字符串中遍历搜索,但是如果找子串工作必不可少,那么必须这么做,
但是能少做就少做。

  • index(sub[, start[, end]]) -> int

    • 在指定的区间[start, end),从左至右,查找子串sub
    • 找到返回正索引,没找到抛出异常ValueError
  • rindex(sub[, start[, end]]) -> int

    • 在指定的区间[start, end),从左至右,查找子串sub
    • 找到返回正索引,没找到抛出异常ValueError

index方法和find方法很像,不好的地方在于找不到抛异常。推荐使用find方法。

s = 'magedu.ed
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值