2. 打开文件“成语大全(含拼音).txt”,观察文本结构,编写程序,实现以下功能:(1)对文本中的所有成语进行提取,写入文件“成语大全.txt”,一行一个成语。(2)读取文件“成语大全.txt”中的内容,提取7个字的成语并输出。 (3)读取文件“成语大全.txt”中的内容,提取长度为5且以“三”开头的成语并输出。(4)读取文件“成语大全.txt”中的内容,对以数字开头的成语个数进行统计,并将结果输出。输出格式如下: 以三开头的成语有183个以一开头的成语有673个以八开头的成语有32个以七开头的成语有79个以五开头的成语有77个以六开头的成语有27个以二开头的成语有21个以十开头的成语有78个以四开头的成语有53个以九开头的成语有48个
时间: 2023-12-14 14:38:05 浏览: 224
(1)提取文本中的所有成语,并写入文件“成语大全.txt”,一行一个成语。
```python
import re
# 打开文件,读取所有内容
with open('成语大全(含拼音).txt', encoding='utf-8') as f:
content = f.read()
# 使用正则表达式提取所有成语
idioms = re.findall(r'【.*?】', content)
# 将成语写入文件
with open('成语大全.txt', 'w', encoding='utf-8') as f:
for idiom in idioms:
f.write(idiom.strip('【】') + '\n')
```
(2)提取文件“成语大全.txt”中的7个字的成语并输出。
```python
with open('成语大全.txt', encoding='utf-8') as f:
content = f.read()
# 使用正则表达式提取7个字的成语
seven_idioms = re.findall(r'^[\u4e00-\u9fa5]{7}$', content, re.M)
# 输出7个字的成语
print("7个字的成语有:")
for idiom in seven_idioms:
print(idiom)
```
(3)提取文件“成语大全.txt”中长度为5且以“三”开头的成语并输出。
```python
with open('成语大全.txt', encoding='utf-8') as f:
content = f.read()
# 使用正则表达式提取长度为5且以“三”开头的成语
three_idioms = re.findall(r'^三[\u4e00-\u9fa5]{3}$', content, re.M)
# 输出结果
print("长度为5且以“三”开头的成语有:")
for idiom in three_idioms:
print(idiom)
```
(4)统计以数字开头的成语个数,并将结果输出。
```python
with open('成语大全.txt', encoding='utf-8') as f:
content = f.read()
# 使用正则表达式提取以数字开头的成语,并进行统计
count_dict = {}
for i in range(10):
count_dict[str(i)] = len(re.findall(r'^{}[\u4e00-\u9fa5]+$'.format(i), content, re.M))
# 输出结果
for k, v in count_dict.items():
print("以{}开头的成语有{}个".format(k, v))
```
完整代码如下:
```python
import re
# (1)提取文本中的所有成语,并写入文件“成语大全.txt”,一行一个成语。
with open('成语大全(含拼音).txt', encoding='utf-8') as f:
content = f.read()
idioms = re.findall(r'【.*?】', content)
with open('成语大全.txt', 'w', encoding='utf-8') as f:
for idiom in idioms:
f.write(idiom.strip('【】') + '\n')
# (2)提取文件“成语大全.txt”中的7个字的成语并输出。
with open('成语大全.txt', encoding='utf-8') as f:
content = f.read()
seven_idioms = re.findall(r'^[\u4e00-\u9fa5]{7}$', content, re.M)
print("7个字的成语有:")
for idiom in seven_idioms:
print(idiom)
# (3)提取文件“成语大全.txt”中长度为5且以“三”开头的成语并输出。
with open('成语大全.txt', encoding='utf-8') as f:
content = f.read()
three_idioms = re.findall(r'^三[\u4e00-\u9fa5]{3}$', content, re.M)
print("长度为5且以“三”开头的成语有:")
for idiom in three_idioms:
print(idiom)
# (4)统计以数字开头的成语个数,并将结果输出。
with open('成语大全.txt', encoding='utf-8') as f:
content = f.read()
count_dict = {}
for i in range(10):
count_dict[str(i)] = len(re.findall(r'^{}[\u4e00-\u9fa5]+$'.format(i), content, re.M))
for k, v in count_dict.items():
print("以{}开头的成语有{}个".format(k, v))
```
阅读全文