3.《侠客行》是金庸的重要武侠作品之一,主要叙述一个懵懂少年石破天的江湖经历。这里给出一个《侠客行》的网络版本,文件名为“侠客行-网络版.txt”。基础中文字符的Unicode编码范围是[0x4e00,0x9fa5],请统计给定文本中存在多少该范围内的基础中文字符以及每个字符的出现次数。以如下模式(CSV格式)保存在“侠客行-字符统计.txt”文件中。示例输出中括号内是对应字符的十六进制Unicode编码形式,冒号后是出现次数,逗号两侧无空格。输出格式侠(0x4fa0):888, 客(0x5ba2):666, 行(0x884c):111
时间: 2024-02-22 15:00:51 浏览: 170
安全江湖之侠客行.pdf
以下是 Python 代码实现:
```python
# 读取文件
with open("侠客行-网络版.txt", "r", encoding="utf-8") as f:
text = f.read()
# 统计中文字符出现次数
count = {}
for char in text:
if 0x4e00 <= ord(char) <= 0x9fa5: # 判断是否为中文字符
if char in count:
count[char] += 1
else:
count[char] = 1
# 输出结果到文件
with open("侠客行-字符统计.txt", "w", encoding="utf-8") as f:
for char, cnt in count.items():
f.write(f"{char}({hex(ord(char))}):{cnt}, ")
```
代码解释:
- `open("侠客行-网络版.txt", "r", encoding="utf-8")` 打开文件,使用 `utf-8` 编码读取中文字符。
- `text = f.read()` 读取文件内容到变量 `text` 中。
- `count = {}` 定义一个空字典 `count`,用于统计每个中文字符出现的次数。
- `if 0x4e00 <= ord(char) <= 0x9fa5:` 判断字符是否在中文字符的 Unicode 编码范围内。
- `if char in count:` 如果字符已经在字典中,则将其出现次数加 1。
- `else:` 如果字符不在字典中,则将其加入字典,并将出现次数设为 1。
- `with open("侠客行-字符统计.txt", "w", encoding="utf-8") as f:` 打开输出文件,使用 `utf-8` 编码写入中文字符。
- `f.write(f"{char}({hex(ord(char))}):{cnt}, ")` 将每个中文字符的字符、Unicode 编码和出现次数写入文件。其中,`hex()` 函数将十进制数转换为十六进制字符串。
阅读全文