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)
相关推荐
QuantumStack20 分钟前
【C++ 真题】P1104 生日
开发语言·c++·算法
whoarethenext36 分钟前
使用 C++/OpenCV 和 MFCC 构建双重认证智能门禁系统
开发语言·c++·opencv·mfcc
笑稀了的野生俊1 小时前
在服务器中下载 HuggingFace 模型:终极指南
linux·服务器·python·bash·gpu算力
Naiva1 小时前
【小技巧】Python+PyCharm IDE 配置解释器出错,环境配置不完整或不兼容。(小智AI、MCP、聚合数据、实时新闻查询、NBA赛事查询)
ide·python·pycharm
代码的奴隶(艾伦·耶格尔)1 小时前
后端快捷代码
java·开发语言
Jay_5152 小时前
C++多态与虚函数详解:从入门到精通
开发语言·c++
路来了2 小时前
Python小工具之PDF合并
开发语言·windows·python
蓝婷儿2 小时前
Python 机器学习核心入门与实战进阶 Day 3 - 决策树 & 随机森林模型实战
人工智能·python·机器学习
AntBlack2 小时前
拖了五个月 ,不当韭菜体验版算是正式发布了
前端·后端·python
.30-06Springfield3 小时前
决策树(Decision tree)算法详解(ID3、C4.5、CART)
人工智能·python·算法·决策树·机器学习