1.Python讀取一個txt文件的內(nèi)容并將其寫入到另一個txt文件
# -*- encoding:gb2312 -*-
import chardet
def read_write_txt(inputpath, outputpath):
with open(
inputpath,
'rb',
) as file: # rb: 以二進(jìn)制格式打開一個文件用于只讀。
raw_data = file.read() # 讀出內(nèi)容用到的是read函數(shù)。這個函數(shù)的工作原理是依靠一個指針來對內(nèi)容進(jìn)行訪問的。read方法會用一個指針將文本內(nèi)容從上到下掃面一遍并且將其輸出到內(nèi)存。掃描完后它的指針是停留在末尾處的。也就是說,如果我們想用read方法訪問同一個文件兩次,是不可行的。
detected_encoding = chardet.detect(raw_data)['encoding'] # 返回文件的編碼格式。
with open(inputpath, 'r', encoding=detected_encoding) as infile:
with open(outputpath, 'w', encoding=detected_encoding) as outfile:
# # 第一種:讀取所有行
# data1 = infile.readlines()
# print(data1)
# # 輸出:['好好學(xué)習(xí)\n', '天天向上\n', '我是一只魚\n', '哈哈哈']
# 第二種:每行分開讀取
data2 = []
for line in infile:
data_line = line.strip("\n") # 去除首尾換行符
data2.append(data_line)
print(data2)
# 輸出:['好好學(xué)習(xí)', '天天向上', '我是一只魚', '哈哈哈']
# 寫入方法
for line in data2:
# data = '' + '\t'.join(str(i) for i in line) + '\n' # 用\t隔開
data = '' + ''.join(str(i) for i in line) + '\n' # 用空格隔開
outfile.write(data)
if __name__ == "__main__":
input_file = '1.txt' # 待讀取的文件
output_file = 'ansi.txt' # 寫入的文件
read_write_txt(input_file, output_file)
待讀入文件1.txt
寫入后的文件ansi.txt
2.Python讀取一個未知編碼的文件并將其設(shè)置為指定編碼格式
要在Python中讀取一個未知編碼的文件并將其設(shè)置為另一種編碼格式,可以使用chardet模塊來檢測文件的編碼格式,然后使用Python內(nèi)置的編碼庫來進(jìn)行轉(zhuǎn)換。
使用該代碼前需要安裝chardet和codecs庫
pip install chardet
pip install codecs
首先,你可以使用chardet模塊來檢測文件的編碼格式。你可以使用以下代碼來完成這個步驟:
# -*- encoding:gb2312 -*-
import chardet
import codecs
def save_as_specified_encoding(input_file, output_file, output_encoding): #input_file為未知編碼文件,output_file為編碼后的文件,output_encoding為編碼格式
with open(
input_file,
'rb',
) as file: # rb: 以二進(jìn)制格式打開一個文件用于只讀。
raw_data = file.read() # 讀出內(nèi)容用到的是read函數(shù)。這個函數(shù)的工作原理是依靠一個指針來對內(nèi)容進(jìn)行訪問的。read方法會用一個指針將文本內(nèi)容從上到下掃面一遍并且將其輸出到內(nèi)存。掃描完后它的指針是停留在末尾處的。也就是說,如果我們想用read方法訪問同一個文件兩次,是不可行的。
detected_encoding = chardet.detect(raw_data)['encoding'] # 返回文件的編碼格式。
with codecs.open(input_file,
'r',
encoding=detected_encoding,
errors='ignore') as input_file:
content = input_file.read()
# codecs.open(filename, mode='r', encoding=None, errors='strict', buffering=1) 使用給定的 mode 打開已編碼的文件并返回一個 StreamReaderWriter的實(shí)例,提供透明的編碼/解碼;與內(nèi)置函數(shù)open類似。
with codecs.open(output_file,
'w',
encoding=output_encoding,
errors='ignore') as output_file:
output_file.write(content)
if __name__ == "__main__":
input_file = '1.txt' # 未知編碼文件
output_file = 'ansi.txt' # 編碼后的文件
output_encoding = 'ansi' # 設(shè)置的編碼
save_as_specified_encoding(input_file, output_file, output_encoding)
原始文件1.txt
編碼后的文件ansi.txt
3.Python實(shí)現(xiàn)txt文件中字符串的替換
# -*- encoding:gb2312 -*-
def replace_txt(inputpath, outputpath):
# 打開原始文件和目標(biāo)文件
with open(inputpath, 'r') as file:
content = file.read()
# 替換字符:和:
new_content = content.replace(':', ' ')
new_content = new_content.replace(':', ' ')
# 將替換后的內(nèi)容寫入目標(biāo)文件
with open(outputpath, 'w') as file:
file.write(new_content)
if __name__ == "__main__":
input_path = 'ansi.txt' # 待處理的txt文件
output_path = 'result.txt' # 替換字符后的txt文件
replace_txt(input_path, output_path)
ansi文件(原始文件)
result文件 (替換后的文件)文章來源:http://www.zghlxwxcb.cn/news/detail-687840.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-687840.html
到了這里,關(guān)于1.Python操作txt文本的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!