已知有一个正确单词索引表(保存在当前目录下的文件index.txt中,且全为小写字母,按照字典序由小到大排列,每个单词独占一行),编写程序利用该单词表对某一英文文章(保存在当前目录下的另一个文件in.txt中)进行单词正确性检查,若该英文文章中出现的单词(只有连续字母组成)没有出现在单词索引文件中(检查时大小写无关),则将该出错的单词(其中的字母全部转换为小写)输出到当前目录下的另一文件error.txt中,如果同一个单词连续出错,则将该单词重复输出,每个单词独占一行,并且以字典序由小到大的顺序输出。 假设: 1、in.txt中的文章有可能没有经过排版,格式有可能杂乱无章,也有可能没有写完整。 2、index.txt中的单词个数不超过1000个,每个单词的长度不超过50个字母。 3、若出错的单词多次出现,则在error.txt文件中多次输出。
时间: 2024-01-22 08:19:16 浏览: 71
文件中单词查找
4星 · 用户满意度95%
可以按照以下步骤实现该程序:
1. 读取单词索引表,将所有单词转换成小写,并保存到一个集合中。
2. 读取待检查的英文文章,将其中所有单词提取出来,并转换成小写。
3. 对于每个单词,检查该单词是否在单词索引集合中。如果不在,将该单词输出到error.txt文件中。
4. 为了避免同一个单词被重复输出,可以使用一个集合来保存已经输出的单词。
以下是实现该程序的Python代码:
```python
# 读取单词索引表
with open('index.txt', 'r') as f:
index = set(word.strip().lower() for word in f.readlines())
# 检查待检查的英文文章
with open('in.txt', 'r') as f_in:
with open('error.txt', 'w') as f_out:
checked_words = set()
for line in f_in:
words = line.lower().strip().split()
for word in words:
# 提取单词,去除非字母字符
word = ''.join(filter(str.isalpha, word))
if word and word not in index and word not in checked_words:
f_out.write(word + '\n')
checked_words.add(word)
```
该程序首先读取单词索引表,并将所有单词转换成小写并保存到一个集合中。然后,对于待检查的英文文章,它逐行读取文章,并将每行转换成小写。对于每个单词,它先使用filter函数提取出所有字母字符,然后检查该单词是否在单词索引集合中。如果不在,它就将该单词输出到error.txt文件中。为了避免同一个单词被重复输出,它使用一个集合来保存已经输出的单词。
阅读全文