pytho入门基础:字符串

字符串

字符串就是由若干个不同的unicode字符组成的不可变有序序列

字符串创建

1.原生字符串 字符串中反斜线不再代表转移
2.python中没有字符的概念,一个字符也是字符串
3.字符串是不可变序列
4.任何会对字符串修改的操作都会产生新字符串

#单引号字符串
str1 = '物以类聚,人以群分'
str2 = str() #空串
str3 = str([10,20,30])
#双引号字符串
str2 = "物以类聚,人以群分" #三引号字符串 多⾏字符串
str3 = '''
物以类聚
人以群分
'''
str4 = """
物以类聚
人以群分
""
### 获取字符
因为是不可变序列,所以不能修改单个字符;凡是修改字符串的操作都产生新串

str1 = ‘物以类聚,人以群分’
print(str1[0],str1[-1]) #物 分

遍历

a = '123456789'
for ch in a:
	print(ch)
for i in range(len(a)):
	print(a[i],end=' ')

通用

s1 = "Hello "
s2 = "World"

1.字符串链接,产生新串

res = s1 + s2
print(res)
#如果两个字符串中间没有任何东西,也会自动产生一个新串
res1 = "123""456"
print(res1)

2.* 重复

print("*"*100)

3.len 字符串个数

print(len(s1))

3.in 判定字符串是否是子串

s1 = "Hello "
print("e" in s1)
print("el" in s1)
print("hel" in s1)

切片

s = "1234567890"
print(s[::-1])
print(s[:-4:-1])
print(s[-4:0:-1])
print(s[::-2])

print(s[:3])
print(s[5:3]) # 空字符串

查找和替换

方法名说明示例
str.count(sub,start=0,end=len(string))查找子串sub出现的次数;start从指定下标开始查,end结束下标str1.count()
str.find(str, beg=0, end=len(string))从左向右检测字符串中是否包含子字符串 str,如果包含返回下标,否则返回-1。beg和end是可选参数,指定查找范围str1.find()
str.rfind(sub[, start[, end]])从右向左检测字符串中是否包含sub子串,包含返回子串的下标,否则返回-1str1.rfind()
str.index(sub[, start[, end]])作用类似find,但子串sub不存在会报错ValueErrorstr1.index()
str.rindex(sub[, start[, end]])从右向左检测,类似rfind,会报ValueErrorstr1.rindex()
str.replace(old, new[, count])返回一个新字符串,原串中的old被替换为new,可选参数count指定替换次数。str1.replace(‘a’,‘b’)

1.str.count(子串) 查找子串出现的次数

str1 = 'a fox jumped over the fence'
print(str1.count('e'))
print(str1.count('e',0,11))
print(str1.count('fox'))

2.find(sub,start,end)
如果存在返回子串第一个字符在主串中的下标;否则返回-1

print(str1.find("over"))
print(str1.find("ove1r"))

3.replace(指定子串,替换字符串,替换次数) 返回新串

str1 = 'a fox jumped over the fox fence'
print(str1.replace("fox","turtle"))
print(str1.replace("fox","turtle",1))

4.rfind从右向左找

str1 = 'a fox jumped over fox the fence'
print(str1.rfind('fox'))  # 18

字符串分隔和组合

方法名说明示例
str.split([sep[,num=count(sep)]])将字符串拆分为以sep为分隔符的列表,如果指定num,则最多拆分num次str1.split(’ ')
str.rsplit([sep[,num=count(sep)]])从右向左拆分
str.partition(seq)将字符串拆分为⼀个有三个元素的元组(seq前的字符串,seq,seq后的字符串)
partion(seq)同上
str.splitlines([keepends])拆分一个包含多⾏的字符串,以每一为⼀个元素返回一个列表。keepends是一个True字符或非零整数,表示保留行尾标志(即换行符)
str.join(seq)以指定字符串str作为分隔符,将seq对象中所有的元素(字符串表示)合并为一个新的字符串;seq可以是字符串、列表等

str1 = ‘a fox jumped over the fence’
1.str.split(sep) 以指定分隔符为基准,将字符串分割为列表;sep默认是空格

res = str1.split()
print(res)
s = "333hello333world"
res = s.split("333")
# res = [value for value in res if value]
print(res)

2.多行字符串
s = “”“11111
22222
33335
444466
“””
1.splitlines可以将多行字符串分割为一个列表

print(s.splitlines())

2.str.join(可迭代对象) 将可迭代对象的字符串元素拼接为一个新串

# 列表中元素必须是字符串
 list1 = ['12',34,'56']
# 把列表中元素转换为字符串
list1 = [str(value) if isinstance(value,(int,float)) else value for value in list1 ]
print(list1)
 # res = ''.join(list1)
res = ','.join(list1)
print(res)

字符串判断

方法名说明示例
str.isalpha()判断字符串是否由字母构成并且只包含字母,是返回True,否返回Falsestr1.isalpha()
isalnum()检测字符串是否由字母和数字组成,如果都是数字或字母返回True,否则返回False
str.isdigit()检测字符串是否由数字构成,可检测byte类型
str.isdecimal()检测字符串是否由数字构成
str.isnumeric()检测字符串是否由数字构成, 可以检测汉字数字:十
str.isspace()检测字符串是否只有空格或tab构成
str.islower()检测字符串中的字母字符是否全部由校写字母组成
str.isupper()检测字符串中的字母字符是否全部由大写写字母组成
str.startswith(suffix[,start[, end]])用于判断字符串是否以指定子字符串头,如果是则返回True,否则返回False。
str.endswith(suffix[,start[, end]])用于判断字符串是否以指定子字符串 尾,如果是则返回True,否则返回False。
# isalpha() 字符串是否有字母构成
# print("sdfs你好f".isalpha())
# s = "wueiu你ir"
# for ch in s:
#     if not (65 <=ord(ch)<=90 or 97<=ord(ch)<=122):
#         print(False)
#         break
# else:
#     print(True)

# 是否纯数字
# print("23423".isdecimal())
# print("23423".isdigit())
# print("23423".isnumeric())

# print(b"23423".isdigit())  # 可以判断byte
# print(b"23423".isdecimal())
# print(b"23423".isnumeric())

# print("十五".isnumeric())
# print("23423".isdigit())
# print("23423".isdecimal())

# 大小写判断
# print("AAAA".isupper())
# print("aaa".islower())


# startwith(sep)
# print("h1ttp://wwww.baidu.com".startswith("http"))
# print("http://wwww.baidu.com".endswith("com"))


# 字符串转换
# print("sdfsdUYUdfhjsdfdsf".lower())
# print("sdfsdUYUdfhjsdfdsf".upper())

# strip 字符串截取

s = "  以一己之力对抗一家巨头产业乃至整个政府,需要多少勇气和毅力?又需要多久的等待多大的牺牲?题材其实并不陌生,整体拍得也很平很严肃,但得益于Todd Haynes的出色功力,整部片的节奏都非常稳、故事线也清晰,虽时长两小时有余却并不显冗长,而那种压抑与震惊感又是随着故事不断发展逐渐渗透着的,很敢拍也的确拍的很好。马克叔还是呆呆的,安妮大概算是正常发挥(波浪长发还是美到我昏厥啊呜呜呜),以及一度对影片中... (展开)"

# 去除两边空格
s = s.strip().rstrip("(展开)").strip().strip("...")
print(s)

字符串转换

方法名说明示例
str.lower()字符串转小写
str.upper()字符串转大写
str.swapcase()把字符串中的大小写字母互换,大写转换成小写,小写转换大写。不去管非字母类字符。
str.capitalize()将字符串的第一个字符转换为大写, 其余转换为小写
str.title()字符串中每个单词的首字母大写,其余小写。
str.lstrip([chars])去除字符串左边指定的字符,默认是去除空格
str.rstrip([chars])去除字符串左边指定的字符,默认是去除空格
str.strip([chars])去除字符串两边边指定的字符,默认是去除空格

其他方法

  1. 将其他类型转换为字符串
print(str(90)) #'90'
print(str([20,30])) #'[20,30]'

2 ord(x) 返回一个字符所对应的码值

print(ord('a')) #97
print(ord('中')) #20013

3 chr(x) 输如一个unicode码,返回一个对应的字符。

print(chr(20013)) #中

eval,将字符串当做代码执行

age = 1
print(eval('age + 3')) # 4
print(eval('+123')) #123
print(eval('3 + 2')) #5

有安全问题

eval("__import__('os').system('dir')") #显示当前目录的文件列表

4 repr(x) 返回一个对象的String格式,适合机器执行

a = [20,30]
s1 = repr(a)
list1 = eval(s1)
list2 = str(a)
print(a == list1)
print(a == list2)

字符串格式化

格式化,就是按照指定格式产生一个新串

print("="*100)
 s = "%-10d %+20s" % (20,"hello world")
print(s)

format
str.format() ⽅法通过字符串中的花括号 {} 来识别替换字段 replacement field,
从⽽完成字符串的格式化。

s = "{}---{}===={}".format(10,20,30)
s = "{}---{}====".format(10,20,30)

用数字表示对应的变量

{}中的数字表示{}所对应的变量(变量从左向右的编号是0,1,2,3)
s = “{1}==={0}”.format(“你好”,90)
用变量名

s = "{age}===={name}".format(name='tom',age=30)
print(s)

完整用法

s = "{0:k^30}==={1:10.2f}".format(20,30)
print(s)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值