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)
相关推荐
码上淘金6 分钟前
【Python】Python常用控制结构详解:条件判断、遍历与循环控制
开发语言·python
Brilliant Nemo8 分钟前
四、SpringMVC实战:构建高效表述层框架
开发语言·python
2301_7875528740 分钟前
console-chat-gpt开源程序是用于 AI Chat API 的 Python CLI
人工智能·python·gpt·开源·自动化
懵逼的小黑子44 分钟前
Django 项目的 models 目录中,__init__.py 文件的作用
后端·python·django
Y3174291 小时前
Python Day23 学习
python·学习
Ai尚研修-贾莲2 小时前
Python语言在地球科学交叉领域中的应用——从数据可视化到常见数据分析方法的使用【实例操作】
python·信息可视化·数据分析·地球科学
格林威2 小时前
Baumer工业相机堡盟工业相机的工业视觉中为什么偏爱“黑白相机”
开发语言·c++·人工智能·数码相机·计算机视觉
橙子199110162 小时前
在 Kotlin 中什么是委托属性,简要说说其使用场景和原理
android·开发语言·kotlin
androidwork2 小时前
Kotlin Android LeakCanary内存泄漏检测实战
android·开发语言·kotlin
qq_508576093 小时前
if __name__ == ‘__main__‘
python