用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 12:18:32 浏览: 190
以下是实现该功能的Python代码:
```python
# 读取单词索引表
with open("index.txt", "r") as f:
word_list = [word.strip().lower() for word in f.readlines()]
# 读取英文文章
with open("in.txt", "r") as f:
content = f.read()
# 提取出所有的单词
import re
words = re.findall(r"[a-zA-Z]+", content)
# 检查单词是否在单词索引表中出现过,若未出现则写入error.txt
with open("error.txt", "w") as f:
for word in sorted(set([word.lower() for word in words])):
if word not in word_list:
f.write(word + "\n")
```
首先,我们使用`with open()`语句读取单词索引表和英文文章。在读取单词索引表时,我们将每个单词都转换为小写字母,并存储在`word_list`列表中。在读取英文文章时,我们将其全部读入并存储在`content`字符串中。
然后,我们使用正则表达式提取出所有的单词,并将它们转换为小写字母。这里使用了`re.findall()`函数,该函数可以从字符串中提取出所有符合正则表达式的子串,并返回一个列表。
最后,我们对所有单词进行检查,如果某个单词未出现在单词索引表中,则将其写入`error.txt`文件中。在写入文件时,我们使用`sorted()`函数对所有出错的单词按字典序排序,并使用`set()`函数去除重复的单词。这样可以保证输出的每个单词只出现一次,并且按字典序排序。
注意,为了避免大小写问题,我们在比较单词是否出现在单词索引表中时,将所有单词都转换为小写字母。
阅读全文