0
点赞
收藏
分享

微信扫一扫

字符串相关及习题

编程练习生J 2022-04-24 阅读 32
python

字符串相关

字符串相关函数

1.len

2.str

str(数据) - 所有的数据都可以转换成字符串;转换的时候实在数据的打印值外面加引号

示例:

nums = 123
str(nums)
print(nums)

list1 = [10, 20, 30]
print(list1)
x = str(list1)
print(x)  # '[10, 20, 30]'

list2 = ["abc", 10, 20]
print(list2)  # ['abc', 10, 20]
x = str(list2)
print(x)  # "['abc', 10, 20]"

dict1 = {'a': 10, "b": 10}
str1 = str(dict1)
for x in str(dict1):
    print(x)

eval() - 获取指定字符串引号中的内容(去掉字符串的引号)
注意:这里的字符串去掉引号后必须是一个合法的表达式
去掉引号后是合法的数据 - str的反向操作

示例:

x = eval('100')
print(x, x * 2, x + 10)  # 100 200 110

# x = eval('abc') #报错

x = eval('"abc"')
print(len(x))  # 3

x = eval('[10, 20, 30]')
print(x)  # [10, 20, 30]

#
x = eval('100+200')
print(x)  # 300

abc = 10
x = eval('abc')
print(x)  # 10

字符串相关方法

join
字符串.join(序列): - 将序列中的元素用指定的字符串连接成一个新的字符串

示例:

list1 = ['hello', 'world!', '你好', '世界']
x = ''.join(list1)
print(x)  # helloworld!你好世界
y = ','.join(list1)
print(y)  # hello,world!,你好,世界

# 练习:将nums中所有的个位数拼接成一个数字字符串, '09042'
nums = [10, 29, 30, 4, 52]
x = ''.join([str(i)[-1] for i in nums])
print(x)
# 练习:将list1中所有的数字用'+'连接,并且计算他们的和:  '19+1.23+8+22.2=50.43'
list1 = [19, 'abc', True, 1.23, 8, 22.2, '环境']
x = '+'.join([str(i) for i in list1 if type(i) == int or type(i) == float])
print(x, '=', eval(x), sep='')

split - 切割
字符串1.split(字符串2) - 将字符串1中所有的字符串2作为切割点对字符串1进行切割,返回一个包含多个字符串的列表
字符串1.split(字符串2,N) - 将符串1中前N个字符串2作为切割点对字符串1进行切割,返回一个包含多个字符串的列表

注意:如果切割点在字符串开头或者字符串结尾,或者连续出现多个切割点都会产生空串

示例:

str1 = 'abc123abc123abc123abc123'
str2 = str1.split('abc')
print(str2)  # ['', '123', '123', '123', '123']
print(str1.split('abc', 2))  # ['', '123', '123abc123abc123']

replace - 替换
字符串1.replace(字符串2,字符串3) - 将字符串1中的所有的字符串2都替换成字符串3
字符串1.replace(字符串2,字符串3,N) - 将字符串1中前N个字符串2都替换成字符串3

str1 = 'how are you? Im fine, Thank you!'
str2 = str1.replace('you', 'me')
print(str2)  # how are me? Im fine, Thank me!
str3 = str1.replace('you', 'me', 1)
print(str3)  # how are me? Im fine, Thank you!

strip
字符串.strip() - 去掉字符串前后的空白字符
字符串.strip(字符)

str1 = ' \t \t \n gg to win \n'
print(str1)
str2 = str1.strip()
print(str2)  # gg to win

str1 = '/gg to win /'
str2 = str1.strip('/')
print(str2)  # gg to win

count
字符串1.count(字符串2) - 统计字符串1中字符串2出现的次数

str1 = 'gg to win '
print(str1.count('g'))  # 2

maketrans、translate
str.maketrans(字符串1,字符串2) - 通过字符串1和字符串2创建替换对应关系表
字符串.translate(对应关系表) - 按对应关系表将字符串中字符进行替换

table = str.maketrans('abc', '123')
print(table)
str1 = '11sadaaasadabcasda1'
str2 = str1.translate(table)
print(str2)  # 11s1d111s1d1231sd11

center、ljust、rjust、zfill
字符串.center(长度,字符) - 将指定字符串变成指定长度,不够的用指定字符填充,原字符放中间
字符串.ljust(长度,字符) - 将指定字符串变成指定长度,不够的用指定字符填充,原字符放左边
字符串.rjust(长度,字符) - 将指定字符串变成指定长度,不够的用指定字符填充,原字符放右边

str1 = 'a'
print(str1.center(7, 'x'))  # xxxaxxx
print(str1.ljust(7, 'x'))  # axxxxxx
print(str1.rjust(7, 'x'))  # xxxxxxa

find、index
字符串1.find(字符串2) - 获取字符串2再字符串1中第一次出现的位置,如果字符串2不存在返回-1
字符串1.index(字符串2) - 获取字符串2再字符串1中第一次出现的位置,如果字符串2不存在报错
字符串1.rfind(字符串2) - 从后往前获取字符串2再字符串1中第一次出现的位置,如果字符串2不存在返回-1
字符串1.rindex(字符串2) - 从后往前获取字符串2再字符串1中第一次出现的位置,如果字符串2不存在报错

str1 = 'you are are'
print(str1.find('are'))  # 4
print(str1.index('are'))  # 4
print(str1.rfind('are'))  # 8
print(str1.rindex('are'))  # 8

isdigit、isnumeric - 判断是否为纯数字字符串

str1 = '123'
print(str1.isnumeric())
print(str1.isdigit())
str1 = '123一'
print(str1.isnumeric())
print(str1.isdigit())

print('k'.upper())
print('K'.lower())

字符串格式化

问题:写代码的时候可能会出现一个字符串中的部分内容无法确定

# 1
name = '小明'
age = 18
str1 = name + '今年' + str(age) + '岁'
print(str1)

# 2 使用格式占位符
str1 = '%s今年%d岁' % (name, age)
print(str1)

# 3 使用f-string
str1 = f'{name}今年{age}岁'
print(str1)

语法:包含格式占位符的字符串%(数据1,数据2,数据3,…)
注意:后面括号中的数据必须和前面字符串中的占位符一一对应
常用的格式占位符:
%s - 字符串占位符,可以对应任何类型的数据
%d - 整数占位符,对应任何数字
%f - 浮点数占位符,可以对应任何数字
%.Nf - 保留N位小数

###  xxx今年xxx岁,月薪xxx元
str1 = '%s今年%d岁,月薪%.2f元' % (name, age, 10000)
print(str1)
price = 34.888
str2 = '价格%s' % price
print(str2)
str3 = '价格:%d' % price
print(str3)
str4 = '价格:%f' % price
print(str4)

f-string

语法:在字符串最前面加f,就可以通过在字符串中通过’{数据}'来提供字符串变化的部分

name = '张三'
str1 = '{name}'  # {name}
print(str1)
str2 = f'{name}'  # 张三
print(str2)
str3 = f'{name * 2}'
print(str3)  # 张三张三
str4 = f'{name[1] * 3}'
print(str4)  # 三三三

# 加参数: {表达式:参数}
# a.控制小数位数的参数:{表达式:.Nf}
money = 18000.21
str1 = f'年薪:{money * 13:.2f}'
print(str1)  # 年薪:234002.73

# b.显示百分比
rate = 0.87
str1 = f'班级及格率:{rate:.2%}'
print(str1)  # 班级及格率:87.00%

# c.逗号显示金额:{表达式:,}
# 1,000
# 1,000,000
money = 17321312
str1 = f'年薪:{money * 13:,.2f}元'
print(str1)

# d.修改填充内容的长度:
num = 23
str1 = f'py2202{num:0>4}'
print(str1)  # py22020023
str1 = f'py2202{num:0<4}'
print(str1)  # py22022300
str1 = f'py2202{num:0^4}'
print(str1)  # py22020230
举报

相关推荐

0 条评论