python请读取【 names . txt 】文件,统计所有姓氏出现的频率(复姓不考虑),并将其按频率从大到小输出到文件【 fnlist . txt 】中,文件格式为:姓氏:频率。
时间: 2024-02-06 13:11:14 浏览: 18
好的,以下是Python代码实现:
```python
# 读取 names.txt 文件
with open('names.txt', 'r', encoding='utf-8') as f:
names = f.read().splitlines()
# 统计所有姓氏出现的频率
freq = {}
for name in names:
if len(name) == 2 and name[0] not in freq:
freq[name[0]] = 1
elif len(name) == 2 and name[0] in freq:
freq[name[0]] += 1
# 按频率从大到小排序
sorted_freq = sorted(freq.items(), key=lambda x: x[1], reverse=True)
# 输出到文件 fnlist.txt 中
with open('fnlist.txt', 'w', encoding='utf-8') as f:
for item in sorted_freq:
f.write('{}:{}\n'.format(item[0], item[1]))
```
这段代码会读取当前目录下的 names.txt 文件,统计其中所有姓氏出现的频率,然后按照频率从大到小排序,并输出到当前目录下的 fnlist.txt 文件中。注意,这里我们只考虑单姓,不考虑复姓。
相关问题
作业2:请读取names.txt文件,请统计所有姓氏出现的频率(复姓不考虑),并将其按频率从大到小输出到文件中,文件格式为:【姓氏】【空格】【频率】
好的,下面是实现这个功能的代码样例:
```python
def count_surnames(file_name):
surname_count = {}
with open(file_name, 'r') as file:
for line in file:
name = line.strip()
surname = name[0]
if len(surname) == 1:
if surname in surname_count:
surname_count[surname] += 1
else:
surname_count[surname] = 1
sorted_surnames = sorted(surname_count.items(), key=lambda x: x[1], reverse=True)
return sorted_surnames
file_name = "names.txt"
sorted_surnames = count_surnames(file_name)
output_file = "surname_frequencies.txt"
with open(output_file, 'w') as file:
for surname, count in sorted_surnames:
file.write(f"{surname} {count}\n")
print(f"姓氏频率已输出到文件 {output_file} 中。")
```
你可以将以上代码保存为一个 Python 文件,然后在命令行中运行该文件,即可得到姓氏频率的输出文件。记得将 "names.txt" 替换为实际的文件名,并且可以根据需要修改输出文件的名称和路径。希望这对你有帮助!如果你还有其他问题,请随时提问。
读取names.txt文件内容,分别统计男性和女性姓名中出现“胜”字的频率
好的,我会帮你实现这个功能。首先,请确保你的文件名为 "names.txt",并且文件中每行包含一个姓名。以下是实现该功能的代码样例:
```python
def count_names_with_character(file_name, character):
male_count = 0
female_count = 0
with open(file_name, 'r') as file:
for line in file:
name = line.strip()
if character in name:
if name.endswith('先生'):
male_count += 1
elif name.endswith('女士'):
female_count += 1
return male_count, female_count
file_name = "names.txt"
character = "胜"
male_count, female_count = count_names_with_character(file_name, character)
print("男性姓名中出现“胜”字的频率:", male_count)
print("女性姓名中出现“胜”字的频率:", female_count)
```
你可以将以上代码保存为一个 Python 文件,然后在命令行中运行该文件,即可得到男性和女性姓名中出现“胜”字的频率。记得将 "names.txt" 替换为实际的文件名。希望这对你有帮助!如果你还有其他问题,请随时提问。