TXT文件的格式基本上一致。小明日记和小红日记文件夹里都有多个TXT文件。需要将其中全部TXT文件按照要求提取信息。
需要你的原文件txt
你的附件在哪csv
需求发详细点,源文件也发出来
提供小小代码示例:
#将代码中的 path/to/folder 替换为你存放小明和小红日记文件的实际路径,将 Diary.csv 替换为你想要保存CSV文件的实际文件名。
import os
import re
import csv
# 改变工作目录
os.chdir('path/to/folder')
# 日记文件名中的日期提取正则表达式
regex_date = re.compile(r'(\d{8})A\d{2}.txt')
# 提取日记中的正文部分的正则表达式
regex_content = re.compile(r'>(.*?)<')
# 定义一个函数,用于读取文件并提取信息
def extract_info(folder_name):
file_list = os.listdir(folder_name)
result = []
for file_name in file_list:
# 获取日期部分
match = regex_date.search(file_name)
if match:
date_str = match.group(1)
date = int(date_str)
# 打开文件并读取内容
with open(os.path.join(folder_name, file_name), 'r', encoding='utf-8') as f:
content = f.read()
# 提取正文部分
match = regex_content.search(content)
if match:
text = match.group(1)
result.append([date, text])
return result
# 提取小明和小红的日记信息,并写入CSV文件
info_xiaoming = extract_info('XiaomingDiary')
info_xiaohong = extract_info('XiaohongDiary')
with open('Diary.csv', 'w', newline='', encoding='utf-8') as f:
writer = csv.writer(f)
writer.writerow(['日期', '正文'])
for row in info_xiaoming:
writer.writerow(row)
for row in info_xiaohong:
writer.writerow(row)
#未完待续,如有帮助,恭请采纳
我可以提供以下解决方案:
首先需要导入re模块来使用正则表达式,同时要用到csv模块来生成CSV文件。
可以先定义一个函数,用正则表达式从txt文件中提取所需信息,函数内部可以先用open函数打开txt文件,并用read方法读取文件内容,然后用findall方法匹配规定好的信息。
在函数中定义一个列表,用于存储提取的信息。并将列表中的每一项都按照要求格式化之后添加到CSV文件中。
再定义一个主函数,用于遍历所有的TXT文件,将每个文件名中的日期提取出来,并作为CSV文件名称的一部分。同时调用之前定义的函数,将每个文件内的信息提取并添加到CSV文件中。
在主函数中也可以加入一些错误处理的代码,比如判断TXT文件是否存在等。
代码示例如下:
import os
import re
import csv
# 定义正则表达式用来提取信息
p = re.compile(r'需要提取的正则表达式')
# 定义函数用来提取信息并将结果写入CSV
def extract_txt_info(txt_file, csv_file):
info_list = []
with open(txt_file, 'r', encoding='utf-8') as f:
content = f.read()
# 用findall方法匹配规定好的信息
info_list = p.findall(content)
# 将每条信息及其所在文件名添加到CSV文件中
csv_name = os.path.basename(txt_file) + '.csv'
with open(csv_file + csv_name, 'w', newline='', encoding='utf-8') as f:
writer = csv.writer(f)
for info in info_list:
writer.writerow([csv_name, info])
# 定义主函数用来遍历所有TXT文件并提取信息到CSV文件中
def main():
# 定义一个列表用于存储所有TXT文件路径
txt_files = []
# 遍历小明日记目录下所有TXT文件,并将路径加入txt_files列表中
for filename in os.listdir('小明日记'):
if filename.endswith('.txt'):
txt_files.append(os.path.join('小明日记', filename))
# 遍历小红日记目录下所有TXT文件,并将路径加入txt_files列表中
for filename in os.listdir('小红日记'):
if filename.endswith('.txt'):
txt_files.append(os.path.join('小红日记', filename))
# 定义CSV文件名
csv_file = 'info_'
# 遍历所有TXT文件,提取信息并将结果写入CSV
for txt_file in txt_files:
extract_txt_info(txt_file, csv_file)
if __name__ == '__main__':
main()
需要注意以下几点:
正则表达式需要根据具体情况进行修改,保证能够匹配到需要提取的信息。
CSV文件的名称需要根据具体情况进行修改,以上代码将CSV文件命名为“info_加上TXT文件名.csv”。
在Windows系统下,最好使用记事本(Notepad)等纯文本编辑器来编辑TXT文件,避免因编码格式问题导致错误。