名为“poetry”的文本文件里面每一行为一首诗,每行的第一句为诗名,后面几句为诗的内容。 任务 1.筛选其中的七言诗(诗内容每句为七个字),保存:例句如下 如饯中书侍郎来济(一作太宗诗):暧暧去尘昏灞岸,飞飞轻盖指河梁。云峰衣结千重叶,雪岫花开几树妆。深悲黄鹤孤舟远,独对青山别路长。却将分手沾襟泪,还用持添离席觞。 2,从筛选出的文本中清洗数据,只保留文字和 ,。? (中文符号) 3.将上面得到的的数据分为两列保存到csv文件中,一列为诗题目,另一列为诗内容 4,将题目分词,题目中的每个字为一个词,保存列表的字符串形式,例如: [’钱’,’中’,’书’,’侍’,’郎’,’来’,’济’] 5.内容分词,将诗词中的以每个字分为一个词,并在列表第一个字前加特殊标记<STA>, 6.最终保存csv文件,gbk编码
时间: 2024-04-28 07:20:59 浏览: 96
对于csv文件的操作
好的,下面是完整的代码实现:
```python
import re
import csv
import jieba
# 读取文件并筛选出七言诗
with open('poetry.txt', 'r', encoding='utf-8') as f:
lines = f.readlines()
septenary_poems = []
for line in lines:
if re.match('^[\u4e00-\u9fa5]{7}[\,\。\?]', line):
septenary_poems.append(line.strip())
# 清洗数据,只保留文字和 ,。?
cleaned_poems = []
for poem in septenary_poems:
cleaned_poem = re.sub('[^\u4e00-\u9fa5\,\。\?]', '', poem)
cleaned_poems.append(cleaned_poem)
# 分割题目和内容并保存到csv文件中
titles = []
contents = []
for poem in cleaned_poems:
parts = poem.split(':')
title = parts[0]
content = parts[1]
titles.append(title)
contents.append(content)
with open('poetry.csv', 'w', encoding='gbk', newline='') as f:
writer = csv.writer(f)
writer.writerows(zip(titles, contents))
# 分词题目并保存到列表中
title_words_list = []
for title in titles:
title_words = list(jieba.cut(title))
title_words_list.append(title_words)
# 分词内容并在每个字前加特殊标记<STA>,保存到列表中
content_words_list = []
for content in contents:
content_words = ['<STA>' + word for word in content]
content_words_list.append(content_words)
# 将题目和内容分词后的结果保存到csv文件中
with open('poetry_words.csv', 'w', encoding='gbk', newline='') as f:
writer = csv.writer(f)
writer.writerow(['title_words', 'content_words'])
for i in range(len(title_words_list)):
writer.writerow([','.join(title_words_list[i]), ','.join(content_words_list[i])])
```
请确保在运行代码前已经安装了jieba和csv模块。
阅读全文