已知有一个正确单词索引表(保存在当前目录下的文件index.txt中,且全为小写字母,按照字典序由小到大排列,每个单词独占一行),编写程序利用该单词表对某一英文文章(保存在当前目录下的另一个文件in.txt中)进行单词正确性检查,若该英文文章中出现的单词(只有连续字母组成)没有出现在单词索引文件中(检查时大小写无关),则将该出错的单词(其中的字母全部转换为小写)输出到当前目录下的另一文件error.txt中,如果同一个单词连续出错,则将该单词重复输出,每个单词独占一行,并且以字典序由小到大的顺序输出。 假设: 1、in.txt中的文章有可能没有经过排版,格式有可能杂乱无章,也有可能没有写完整。 2、index.txt中的单词个数不超过1000个,每个单词的长度不超过50个字母。 3、若出错的单词多次出现,则多次输出。
时间: 2024-01-22 19:19:13 浏览: 66
以下是Python3的程序实现:
```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:
article = f.read().lower()
# 整理英文文章中的单词
import re
pattern = re.compile('[a-z]+')
word_set = set(pattern.findall(article))
# 检查单词正确性并输出错误单词
with open('error.txt', 'w') as f:
for word in sorted(word_set):
if word not in word_list:
f.write(word + '\n')
```
首先,我们读取单词索引表并将其中的单词保存到一个列表`word_list`中。然后,我们读取英文文章并将其中的文本内容全部转换为小写字母。接着,我们使用正则表达式找出英文文章中出现的所有连续字母组成的单词,并将这些单词保存到一个集合`word_set`中。注意,为了方便比较,我们将所有单词都转换为小写字母。
最后,我们遍历`word_set`中的所有单词,如果某个单词不在`word_list`中,则将其写入到`error.txt`文件中。由于要求同一个单词连续出错时要重复输出,因此我们不需要对`word_set`进行去重操作,而是直接使用集合来保存单词,这样可以避免重复输出同一个单词。
需要注意的是,由于英文文章的格式可能比较杂乱,因此我们需要使用正则表达式来找出其中的单词。正则表达式`[a-z]+`表示匹配由小写字母组成的连续字符串,`re.findall`函数会返回所有匹配的结果,并将它们保存到一个列表中。
阅读全文