-
python读写文件并替换文件内容
# -*- coding: utf-8 -*-
# 将本地的test.txt文本文件内容中所有为“许嵩”的全部替换为"xs",并写入到原来的文本文件中
f1 = open('G:/lyric/test/医生.txt', 'r+', encoding='utf-8') # 打开本地的test.txt文本文件
content = f1.read() # 读取text文本文件中的内容
print("原文件内容为:" + '\n' + content)
f1.close() # 关闭操作
customary_content = "许嵩"
new_content = "xs"
name = content.replace(customary_content, new_content) # 内容替换
if customary_content not in content: # 判断要替换的内容是否在文本文件中
print("没有找到你要替换的内容")
else:
with open('G:/lyric/test/医生.txt' , "w", encoding='utf-8') as f2: # 再次打开test.txt文本文件
f2.write(name) # 将替换后的内容写入到test.txt文本文件中
print("替换成功!" + '\n' + "替换后的内容为:" + name)
-
删除一个文本文件中包含某个关键字的行
要删除一个文本文件中包含某个关键字的行,可以按照行读取文件,判断是否包含关键字,然后将不包含关键字的行写入新的文件中。最后,将新的文件重命名为原来的文件名,就可以达到删除指定行的目的。
例中对文件G:/lyric/test/医生.txt 删除了含有关键词 '许嵩’的对应行
# 指定文件名和关键字
filename = 'G:/lyric/test/医生.txt'
key = '许嵩'
# 打开原始文件和临时文件
with open(filename, 'r') as infile, open('G:/lyric/test/医生_new.txt', 'w') as outfile:
# 遍历每一行
for line in infile:
# 判断是否包含关键字
if key not in line:
# 写入不包含关键字的行
outfile.write(line)
# 删除原始文件并将临时文件重命名为原始文件名
import os
os.remove(filename)
os.rename('G:/lyric/test/医生_new.txt', filename)
处理前文本
处理后文本
-
删除一个文本文件中包含某个关键字的行,key为多个
打开名为 file.txt 的文件并读取所有行。定义一个关键字列表,并使用列表推导式创建一个新的行列表,该列表不包含任何包含任何关键字的行。最后,我们将打开相同的文件,以写入模式打开,并将新行写入该文件。
例取仗剑.txt,删除除歌词外的多余部分,将结果写入仗剑_new.txt
#删除txt文件中包含key的对应行,key为多个
# 打开txt文件
with open('G:/lyric/test/仗剑.txt', 'r') as f:
lines = f.readlines()
# 定义要删除的关键字列表
keywords = ['编曲', '制作','吉他','弦乐', '监制','Bass','作词','作曲','鼓','和音','大提琴','录音','混音','笛子','琵琶']
# 创建新的行列表,排除包含关键字的行
new_lines = [line for line in lines if not any(keyword in line for keyword in keywords)]
# 打开txt文件以写入模式,并写入新行
with open('G:/lyric/test/仗剑_new.txt', 'w') as f:
f.writelines(new_lines)
处理前文本
处理后文本
-
删除文件夹内多个txt文件中包含多个关键字的行:
定义要删除的关键字列表和文件夹路径。
使用 os.listdir() 遍历文件夹内的所有文件,并检查每个文件是否为 .txt 文件。对于每个 .txt 文件,我们打开它,读取所有行,并使用列表推导式创建一个新的行列表,该列表不包含任何包含任何关键字的行。最后,我们将打开相同的文件,以写入模式打开,并将新行写入该文件。
- 根据需求定义关键词,仅保留歌词文本部分。
以下部分代码对已有.txt文件数据集的内容进行复写,保留有效文字部分
定义要删除的关键字列表
keywords = ['许嵩', '编曲', '制作','吉他','弦乐', '监制','Bass','作词','作曲','鼓','和音','大提琴','录音','混音','笛子','琵琶']
import os
# 定义要删除的关键字列表
keywords = ['许嵩', '编曲', '制作','吉他','弦乐', '监制','Bass','作词','作曲','鼓','和音','大提琴','录音','混音','笛子','琵琶']
# 定义文件夹路径
folder_path = 'G:/lyric/test'
# 遍历文件夹内的所有txt文件
for filename in os.listdir(folder_path):
if filename.endswith('.txt'):
# 打开txt文件
with open(os.path.join(folder_path, filename), 'r') as f:
lines = f.readlines()
# 创建新的行列表,排除包含关键字的行
new_lines = [line for line in lines if not any(keyword in line for keyword in keywords)]
# 打开txt文件以写入模式,并写入新行
with open(os.path.join(folder_path, filename), 'w') as f:
f.writelines(new_lines)
删除前文本
处理后文本
-
删除文件夹内多个txt文件中包含多个关键字的行,保存在新文件夹内:
folder_path = 'G:/lyric/xs'
folder_path2 = 'G:/lyric/xs/new'
对路径1下的txt文件进行处理,将处理结果保存在路径2中
import os
# 定义要删除的关键字列表
keywords = ['许嵩', '编曲', '制作','吉他','弦乐', '监制','Bass','作词','作曲','鼓','古筝','和音','小号','提琴','录音','混音','笛子','琵琶']
# 定义文件夹路径
folder_path = 'G:/lyric/xs'
folder_path2 = 'G:/lyric/xs/new'
# 遍历文件夹内的所有txt文件
for filename in os.listdir(folder_path):
if filename.endswith('.txt'):
# 打开txt文件
with open(os.path.join(folder_path, filename), 'r') as f:
lines = f.readlines()
# 创建新的行列表,排除包含关键字的行
new_lines = [line for line in lines if not any(keyword in line for keyword in keywords)]
# 打开txt文件以写入模式,并写入新行
with open(os.path.join(folder_path2, filename), 'w') as f:
f.writelines(new_lines)
image.png