字符串拼接
python
age = '18'
name = 'wzy'
print(age+name)
结果:
18wzy
切片
切片介绍
python
sequence[start:stop:step]
sequence
是要切片的序列(在这种情况下是name2
)。start
是子序列开始的索引(包含)。如果省略,则默认为序列的开始。stop
是子序列结束的索引(不包含)。如果省略,则默认为序列的结束。step
是子序列中元素之间的间隔。如果省略,则默认为1。[:X]
,从最左边往右数,直到X;[X:]
从X往右数直到数,直到最右边
python
str1 = '012345'
print(str1[0:5:2])
# 结果为:
024
保留指定的小数
python
# 方式1
print(f'下载速度 {download / 1024 :.2f} MB/S')
# 方式2
download = round(random.randint(1024, 4097) / 1024, 2)
反向步进(反向切片)
python
str1 = '012345'
print(str1[5:0:-2])
结果:
531
print(str1[::-1])
结果倒了
python
str1 = '12345'
print(str1[0])
print(str1[1])
print(str1[2])
print(str1[3])
print(str1[4])
#结果:
1
2
3
4
5
可以简化为:
name = 'wzy'
for i in range(3):
print(name[i])
若要同时打印下标,可以使用一个函数:
python
name = 'wzy'
for index, i in enumerate(name):
print(index, i)
# 实现没有0的选择菜单
name = 'wzy'
for index, i in enumerate(name):
print(index+1, i)
结果:
1 w
2 z
3 y
shell版切割:
bash
name="abcde"
for i in `seq $(echo $name | wc -L)`
do
echo $name | cut -c$i
done
同shell的字符截取范围类似,python也有类似的截取:
python
str = 'abcde'
print(str[0:2])
print(str[1:3])
print(str[0:6])
结果:
ab
bc
abcde
替换
python
name = 'wzy'
print(name.replace('z', 'Z', 1)) # 替换第一个 'z' 为 'Z'
结果:
Zzy
字符处理总结
python
abc="hello,nice to meet you"
print(len(abc)) # 调用len()函数来算长度
print(abc.__len__()) # 使用字符串的__len__()方法来算字符串的长度
print(abc.capitalize()) # 整个字符串的首字母大写
print(abc.title()) # 每个单词的首字母大写
print(abc.upper()) # 全大写
print(abc.lower()) # 全小写
print("HAHAhehe".swapcase()) # 字符串里大小写互换
print(abc.center(50,"*")) # 一共50个字符,字符串放中间,不够的两边补*
print(abc.ljust(50,"*")) # 一共50个字符,字符串放中间,不够的右边补*
print(abc.rjust(50,"*")) # 一共50个字符,字符串放中间,不够的左边补*
print(" haha\n".strip()) # 删除字符串左边和右边的空格或换行
print(" haha\n".lstrip()) # 删除字符串左边的空格或换行
print(" haha\n".rstrip()) # 删除字符串右边的空格或换行
print(abc.endswith("you")) # 判断字符串是否以you结尾
print(abc.startswith("hello")) # 判断字符串是否以hello开始
print(abc.count("e")) # 统计字符串里e出现了多少次
print(abc.find("nice")) # 找出nice在字符串的第1个下标,找不到会返回-1
print(abc.rfind("e")) # 找出最后一个e字符在字符串的下标,找不到会返回-1
print(abc.index("nice")) # 与find类似,区别是找不到会有异常(报错)
print(abc.rindex("e")) # 与rfind类似,区别是找不到会有异常(报错)
print(abc.isalnum()) # 检查字符串是否只包含字母和数字
print(abc.isalpha()) # 检查字符串是否只包含字母
print(abc.isdecimal()) # 检查字符串是否只包含十进制数字
print(abc.isdigit()) # 判断字符是否为纯数字
print(abc.islower()) # 检查字符串中的所有字母是否都是小写
print(abc.isnumeric()) # 检查字符串是否只包含数字字符。包括数字、罗马数字、汉字数字
print(abc.isspace()) # 查字符串是否只包含空白字符;如空格、制表符、换行符等
split 分割
字符串切割 split ,split()[1]表示以空格分隔,取出第1列(前面还有一个0列)
MemTotal: 4026160 kB
MemFree: 2861068 kB
MemAvailable: 3330780 kB
Buffers: 89864 kB
python
f = open(r"D:\Desktop\python\mem.txt", mode='r', encoding='utf-8')
for line in f:
if line.startswith('MemAvail'):
print(round(int(line.split()[1]) / 1024 / 1024, 2))
f.close()
# 打印可用内存3GB
有一个文件密码文件内容为:wzy:123
python
with open(r'D:\Desktop\python\user.txt', mode='rt', encoding='utf-8') as f:
content = f.read()
username, userpassword = content.split(':')
print(username, userpassword)
结果:wzy 123
test.txt内容如下:要求:从文件中取出每一条记录放入列表中,列表的每个元素都是 {'name':'wzy','sex':'male','age':18,'salary':3000}
的字典形式
python
wzy male 18 3000
she male 38 30000
tom female 28 20000
jim female 28 10000
方式1:
python
with open(r'test.txt', encoding='utf-8', mode='r') as file:
# 初始化一个空列表存储所有字典
records = []
lines = file.readlines()
for line in lines:
# 去除首尾的空白字符并按照空格分列
parts = line.strip().split()
record = {
'name': parts[0],
'sex': parts[1],
'age': parts[2],
'salary': parts[3]
}
# 把处理好的记录添加到列表中
records.append(record)
print(records)
执行结果:
python
[{'name': 'wzy', 'sex': 'male', 'age': '18', 'salary': '3000'}, {'name': 'she', 'sex': 'male', 'age': '38', 'salary': '30000'}, {'name': 'tom', 'sex': 'female', 'age': '28', 'salary': '20000'}, {'name': 'jim', 'sex': 'female', 'age': '28', 'salary': '10000'}]
方式2:
split 分割后的数据会作为列表返回
python
with open('test.txt', 'r') as file:
# 定义标题行,顺序为:姓名, 性别, 年纪, 薪资
headers = ['name', 'sex', 'age', 'salary']
result = []
for line in file:
data = line.strip().split()
# zip把2个列表合成为一个元组,然后dict把元组转为字典,存储到record
record = dict(zip(headers, data))
result.append(record)
print(result)
需求1:求薪资综合
python
total_salary = 0
for i in result:
total_salary += int(i['salary'])
print(total_salary)
python
表达式方式为:
total_salary = sum(int(i['salary']) for i in result)
需求1:求平均薪资
python
average_salary = total_salary / len(result)