python文本处理-基础篇

字符串拼接

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)
相关推荐
昵称画1 小时前
交接班记录电子化:三班之间的信息不漏
开发语言·数据库·人工智能·低代码·php
“AI国潮设计-小江”1 小时前
【AIGC实战】Python+SDXL批量生成“潮汕英歌舞不倒翁”IP | 角色一致性与多场景融合方案,附完整代码
开发语言·人工智能·python·prompt·aigc
传奇开心果编程1 小时前
【Rust入门练中学】第6课:结构体与方法
开发语言·rust·结构体·编程语言理论·结构体方法·编程通用语言
Linux_cy1 小时前
服务器管理工具哪个好用?我用了七八个
运维·服务器·javascript·python·ssh·面板·gmssh
MoRanzhi12031 小时前
第6篇(下)· 使用 PyQt5 实现 2048 高性能计算版:统一运行控制与跨模式安全交接
python·pyqt·进程管理·状态机·软件架构·并发控制·数据一致性
code tsunami2 小时前
【无标题】
开发语言·python
CodeGL2 小时前
10、Python基础之进程和线程
开发语言·python
TechWayfarer3 小时前
PHP漏洞被利用,怎么揪出攻击IP?
开发语言·python·tcp/ip·网络安全·php
2601_967980114 小时前
Python列表操作方法详解
python·数据类型·修改·列表操作·功能汇总
卡卡~~4 小时前
“101计划”核心课程实践教材《数据实验结构指导-C++语言版》题目集
开发语言·c++·学习·算法