-
python讀寫文件并替換文件內(nèi)容
# -*- coding: utf-8 -*-
# 將本地的test.txt文本文件內(nèi)容中所有為“許嵩”的全部替換為"xs",并寫入到原來的文本文件中
f1 = open('G:/lyric/test/醫(yī)生.txt', 'r+', encoding='utf-8') # 打開本地的test.txt文本文件
content = f1.read() # 讀取text文本文件中的內(nèi)容
print("原文件內(nèi)容為:" + '\n' + content)
f1.close() # 關(guān)閉操作
customary_content = "許嵩"
new_content = "xs"
name = content.replace(customary_content, new_content) # 內(nèi)容替換
if customary_content not in content: # 判斷要替換的內(nèi)容是否在文本文件中
print("沒有找到你要替換的內(nèi)容")
else:
with open('G:/lyric/test/醫(yī)生.txt' , "w", encoding='utf-8') as f2: # 再次打開test.txt文本文件
f2.write(name) # 將替換后的內(nèi)容寫入到test.txt文本文件中
print("替換成功!" + '\n' + "替換后的內(nèi)容為:" + name)
-
刪除一個文本文件中包含某個關(guān)鍵字的行
要刪除一個文本文件中包含某個關(guān)鍵字的行张症,可以按照行讀取文件,判斷是否包含關(guān)鍵字,然后將不包含關(guān)鍵字的行寫入新的文件中嘲恍。最后,將新的文件重命名為原來的文件名雄驹,就可以達(dá)到刪除指定行的目的佃牛。
例中對文件G:/lyric/test/醫(yī)生.txt 刪除了含有關(guān)鍵詞 '許嵩’的對應(yīng)行
# 指定文件名和關(guān)鍵字
filename = 'G:/lyric/test/醫(yī)生.txt'
key = '許嵩'
# 打開原始文件和臨時文件
with open(filename, 'r') as infile, open('G:/lyric/test/醫(yī)生_new.txt', 'w') as outfile:
# 遍歷每一行
for line in infile:
# 判斷是否包含關(guān)鍵字
if key not in line:
# 寫入不包含關(guān)鍵字的行
outfile.write(line)
# 刪除原始文件并將臨時文件重命名為原始文件名
import os
os.remove(filename)
os.rename('G:/lyric/test/醫(yī)生_new.txt', filename)
處理前文本
處理后文本
-
刪除一個文本文件中包含某個關(guān)鍵字的行,key為多個
打開名為 file.txt 的文件并讀取所有行。定義一個關(guān)鍵字列表医舆,并使用列表推導(dǎo)式創(chuàng)建一個新的行列表俘侠,該列表不包含任何包含任何關(guān)鍵字的行象缀。最后,我們將打開相同的文件爷速,以寫入模式打開央星,并將新行寫入該文件。
例取仗劍.txt惫东,刪除除歌詞外的多余部分莉给,將結(jié)果寫入仗劍_new.txt
#刪除txt文件中包含key的對應(yīng)行,key為多個
# 打開txt文件
with open('G:/lyric/test/仗劍.txt', 'r') as f:
lines = f.readlines()
# 定義要刪除的關(guān)鍵字列表
keywords = ['編曲', '制作','吉他','弦樂', '監(jiān)制','Bass','作詞','作曲','鼓','和音','大提琴','錄音','混音','笛子','琵琶']
# 創(chuàng)建新的行列表廉沮,排除包含關(guān)鍵字的行
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)
處理前文本
處理后文本
-
刪除文件夾內(nèi)多個txt文件中包含多個關(guān)鍵字的行:
定義要刪除的關(guān)鍵字列表和文件夾路徑。
使用 os.listdir() 遍歷文件夾內(nèi)的所有文件废封,并檢查每個文件是否為 .txt 文件州泊。對于每個 .txt 文件,我們打開它漂洋,讀取所有行遥皂,并使用列表推導(dǎo)式創(chuàng)建一個新的行列表,該列表不包含任何包含任何關(guān)鍵字的行刽漂。最后演训,我們將打開相同的文件,以寫入模式打開贝咙,并將新行寫入該文件样悟。
- 根據(jù)需求定義關(guān)鍵詞,僅保留歌詞文本部分庭猩。
以下部分代碼對已有.txt文件數(shù)據(jù)集的內(nèi)容進(jìn)行復(fù)寫窟她,保留有效文字部分
定義要刪除的關(guān)鍵字列表
keywords = ['許嵩', '編曲', '制作','吉他','弦樂', '監(jiān)制','Bass','作詞','作曲','鼓','和音','大提琴','錄音','混音','笛子','琵琶']
import os
# 定義要刪除的關(guān)鍵字列表
keywords = ['許嵩', '編曲', '制作','吉他','弦樂', '監(jiān)制','Bass','作詞','作曲','鼓','和音','大提琴','錄音','混音','笛子','琵琶']
# 定義文件夾路徑
folder_path = 'G:/lyric/test'
# 遍歷文件夾內(nèi)的所有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()
# 創(chuàng)建新的行列表,排除包含關(guān)鍵字的行
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)
刪除前文本
處理后文本
-
刪除文件夾內(nèi)多個txt文件中包含多個關(guān)鍵字的行震糖,保存在新文件夾內(nèi):
folder_path = 'G:/lyric/xs'
folder_path2 = 'G:/lyric/xs/new'
對路徑1下的txt文件進(jìn)行處理,將處理結(jié)果保存在路徑2中
import os
# 定義要刪除的關(guān)鍵字列表
keywords = ['許嵩', '編曲', '制作','吉他','弦樂', '監(jiān)制','Bass','作詞','作曲','鼓','古箏','和音','小號','提琴','錄音','混音','笛子','琵琶']
# 定義文件夾路徑
folder_path = 'G:/lyric/xs'
folder_path2 = 'G:/lyric/xs/new'
# 遍歷文件夾內(nèi)的所有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()
# 創(chuàng)建新的行列表趴腋,排除包含關(guān)鍵字的行
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