Migrate project from typing_practiceweb
This commit is contained in:
38
scripts/convert_txt_csv.py
Normal file
38
scripts/convert_txt_csv.py
Normal file
@@ -0,0 +1,38 @@
|
||||
import csv
|
||||
import re
|
||||
|
||||
def process_words_file(input_file, output_file):
|
||||
# 读取文件内容
|
||||
with open(input_file, 'r', encoding='utf-8') as f:
|
||||
content = f.read()
|
||||
|
||||
# 去除类别信息 (如 A. (103), B. (105), C. (144)...)
|
||||
category_pattern = re.compile(r"^[A-Z]\.\s*\(\d+\)\s*$", re.MULTILINE)
|
||||
content = category_pattern.sub('', content)
|
||||
|
||||
# 使用更精确的模式匹配单词条目
|
||||
# 匹配格式: 序号. 单词 [发音]: 词义
|
||||
word_pattern = re.compile(r"^\d+\.\s+([^[\n]+?)\s*\[([^\]]+)\]:\s*(.+?)(?=\n\d+\.|$)", re.DOTALL | re.MULTILINE)
|
||||
|
||||
matches = word_pattern.findall(content)
|
||||
|
||||
# 创建 CSV 文件
|
||||
with open(output_file, 'w', encoding='utf-8', newline='') as csvfile:
|
||||
csv_writer = csv.writer(csvfile)
|
||||
# 写入表头
|
||||
csv_writer.writerow(['word', 'pronunciation', 'translation'])
|
||||
|
||||
for match in matches:
|
||||
word = match[0].strip()
|
||||
pronunciation = match[1].strip()
|
||||
# 处理多行翻译,替换换行符为空格
|
||||
translation = re.sub(r'\s+', ' ', match[2].strip())
|
||||
csv_writer.writerow([word, pronunciation, translation])
|
||||
|
||||
print(f"转换完成!CSV 文件已保存为: {output_file}")
|
||||
|
||||
# 输入文件路径和输出文件路径
|
||||
input_file = 'words.txt'
|
||||
output_file = 'words.csv'
|
||||
|
||||
process_words_file(input_file, output_file)
|
||||
Reference in New Issue
Block a user