在数据处理、文本分析或日常工作中,我们经常需要处理TXT文件。Python作为一种强大的编程语言,提供了丰富的库和工具来帮助我们实现TXT文件的自动化处理。以下是八个实用的Python脚本,涵盖了TXT文件处理的常见任务,无论你是初学者还是经验丰富的开发者,都能从中找到有用的工具。
1. 合并TXT文件
当你有多个TXT文件需要合并成一个时,这个脚本非常有用。它读取指定目录下的所有TXT文件,并将它们的内容合并到一个新的TXT文件中。
import os
def merge_txt_files(input_dir, output_file):
with open(output_file, 'w', encoding='utf-8') as outfile:
for filename in os.listdir(input_dir):
if filename.endswith(".txt"):
with open(os.path.join(input_dir, filename), 'r', encoding='utf-8') as infile:
outfile.write(infile.read())
outfile.write("\n") # 可选:在文件之间添加换行符
# 使用示例
merge_txt_files('path/to/input/dir', 'path/to/output/merged.txt')
2. 分割TXT文件
有时,一个大的TXT文件需要被分割成多个较小的文件。这个脚本可以根据指定的行数或文件大小来分割TXT文件。
def split_txt_file(input_file, output_dir, lines_per_file=1000):
if not os.path.exists(output_dir):
os.makedirs(output_dir)
count = 1
with open(input_file, 'r', encoding='utf-8') as infile:
lines = infile.readlines()
for i in range(0, len(lines), lines_per_file):
with open(os.path.join(output_dir, f'split_{count}.txt'), 'w', encoding='utf-8') as outfile:
outfile.writelines(lines[i:i + lines_per_file])
count += 1
# 使用示例
split_txt_file('path/to/input/large.txt', 'path/to/output/dir')
3. 搜索并替换文本
在TXT文件中搜索并替换特定的文本是一个常见的任务。这个脚本允许你指定要搜索和替换的文本,以及要处理的文件。
def replace_text_in_file(file_path, old_text, new_text):
with open(file_path, 'r', encoding='utf-8') as file:
file_data = file.read()
new_data = file_data.replace(old_text, new_text)
with open(file_path, 'w', encoding='utf-8') as file:
file.write(new_data)
# 使用示例
replace_text_in_file('path/to/file.txt', 'old_text', 'new_text')
4. 统计TXT文件中的单词数
这个脚本可以统计TXT文件中的单词数量,以及每个单词出现的次数。
from collections import Counter
import re
def count_words_in_file(file_path):
with open(file_path, 'r', encoding='utf-8') as file:
words = re.findall(r'\b\w+\b', file.read().lower())
word_counts = Counter(words)
return word_counts
# 使用示例
word_counts = count_words_in_file('path/to/file.txt')
for word, count in word_counts.items():
print(f'{word}: {count}')
5. 删除TXT文件中的空行
这个脚本可以删除TXT文件中的空行,使文件更加整洁。
def remove_blank_lines(file_path):
with open(file_path, 'r', encoding='utf-8') as infile:
lines = infile.readlines()
lines = [line for line in lines if line.strip()]
with open(file_path, 'w', encoding='utf-8') as outfile:
outfile.writelines(lines)
# 使用示例
remove_blank_lines('path/to/file.txt')
6. 添加行号到TXT文件
有时,我们需要在TXT文件的每一行前添加行号。这个脚本可以完成这个任务。
def add_line_numbers(file_path):
with open(file_path, 'r', encoding='utf-8') as infile:
lines = infile.readlines()
with open(file_path, 'w', encoding='utf-8') as outfile:
for i, line in enumerate(lines, start=1):
outfile.write(f'{i}: {line}')
# 使用示例
add_line_numbers('path/to/file.txt')
7. TXT文件转CSV
如果TXT文件的内容是按某种格式排列的,你可以将其转换为CSV文件,以便进行进一步的数据分析。
import csv
def txt_to_csv(txt_file, csv_file, delimiter=','):
with open(txt_file, 'r', encoding='utf-8') as infile:
lines = infile.readlines()
with open(csv_file, 'w', newline='', encoding='utf-8') as outfile:
writer = csv.writer(outfile)
for line in lines:
writer.writerow(line.strip().split(delimiter))
# 使用示例
txt_to_csv('path/to/file.txt', 'path/to/output.csv', '\t') # 假设TXT文件使用制表符作为分隔符
8. CSV转TXT
与上一个脚本相反,这个脚本将CSV文件转换为TXT文件。
def csv_to_txt(csv_file, txt_file, delimiter=','):
with open(csv_file, 'r', encoding='utf-8') as infile:
reader = csv.reader(infile)
lines = [delimiter.join(row) for row in reader]
with open(txt_file, 'w', encoding='utf-8') as outfile:
outfile.writelines(line + '\n' for line in lines)
# 使用示例
csv_to_txt('path/to/input.csv', 'path/to/output.txt')
这些脚本涵盖了TXT文件处理的多个方面,从基本的合并、分割、搜索替换到高级的数据转换和统计。无论你是需要处理大量的日志文件、数据报告还是简单的文本文件,这些脚本都能帮助你提高工作效率。根据你的具体需求,你可以直接使用这些脚本,或者在其基础上进行修改和扩展。