用python解决问题。【问题描述】 已知有一个正确单词索引表(保存在当前目录下的文件index.txt中,且全为小写字母,按照字典序由小到大排列,每个单词独占一行),编写程序利用该单词表对某一英文文章(保存在当前目录下的另一个文件in.txt中)进行单词正确性检查,若该英文文章中出现的单词(只有连续字母组成)没有出现在单词索引文件中(检查时大小写无关),则将该出错的单词(其中的字母全部转换为小写)输出到当前目录下的另一文件error.txt中,每个单词独占一行,并且以字典序由小到大的顺序输出。 假设: 1、in.txt中的文章有可能没有经过排版,格式有可能杂乱无章,也有可能没有写完整。 2、index.txt中的单词个数不超过1000个,每个单词的长度不超过50个字母。 3、若出错的单词多次出现,则多次输出。 【输入形式】 保存单词索引表的文件index.txt和保存英文文章的文件in.txt都位于当前目录下。 【输出形式】 将出错的单词以字典序由小到大的顺序输出到当前目录下的文件error.txt中,每个单词单独占一行,多次出错的单词多次输出。若没有出现错误单词,则什么也不输出。
时间: 2024-01-22 16:18:39 浏览: 34
可以按照以下步骤实现:
1. 读取单词索引表文件index.txt,将所有单词保存到一个列表中。
2. 读取英文文章文件in.txt,将其中的所有连续字母组成的单词都提取出来,并转换为小写形式,保存到一个列表中。
3. 遍历第二步中得到的单词列表,对于每个单词,判断它是否在第一步中得到的单词列表中出现。如果没有出现,则将这个单词保存到一个错误单词列表中。
4. 对错误单词列表进行字典序排序,并将结果输出到文件error.txt中。
下面是Python代码实现:
```python
# 读取单词索引表
with open('index.txt', 'r') as f:
index_words = [word.strip().lower() for word in f.readlines()]
# 读取英文文章,并提取其中的单词
with open('in.txt', 'r') as f:
text = f.read()
words = [word.strip().lower() for word in text.split() if word.isalpha()]
# 判断每个单词是否出现在单词索引表中
error_words = []
for word in words:
if word not in index_words:
error_words.append(word)
# 将错误单词按字典序排序,并输出到文件中
if error_words:
with open('error.txt', 'w') as f:
f.write('\n'.join(sorted(error_words)))
else:
print('No error words found.')
```