如何修改Python代码读取TXT文件并识别每个姓名的性别
批量姓名性别识别脚本
以下是修改后的代码,支持读取TXT文件中的姓名列表,调用Genderize API识别性别并分类输出:
import requests import json # 读取TXT文件中的姓名(假设每行一个姓名) def read_names_from_txt(file_path): try: with open(file_path, 'r', encoding='utf-8') as f: # 去除每行的换行符和空白字符,过滤空行 names = [line.strip() for line in f if line.strip()] return names except FileNotFoundError: print(f"错误:未找到文件 {file_path}") return [] # 调用Genderize API获取性别 def get_gender(name): try: response = requests.get(f"https://api.genderize.io/?name={name}") response.raise_for_status() # 检查请求是否成功 data = response.json() return data.get('gender') # 避免键不存在报错 except requests.exceptions.RequestException as e: print(f"请求姓名 {name} 时出错:{e}") return None def main(): # 替换为你的TXT文件路径 file_path = "names.txt" names = read_names_from_txt(file_path) if not names: return male_names = [] female_names = [] unknown_names = [] for name in names: gender = get_gender(name) if gender == 'male': male_names.append(name) elif gender == 'female': female_names.append(name) else: unknown_names.append(name) # 输出结果 print("=== 男性姓名 ===") for name in male_names: print(name) print("\n=== 女性姓名 ===") for name in female_names: print(name) if unknown_names: print("\n=== 无法识别性别/无结果姓名 ===") for name in unknown_names: print(name) if __name__ == "__main__": main()
功能说明
- 文件读取:自动读取指定TXT文件,每行一个姓名,过滤空行和无效内容,同时处理文件不存在的异常。
- API请求优化:加入网络异常捕获,直接使用
response.json()解析返回结果,避免原代码中手动转JSON的冗余操作;用get方法获取性别字段,防止API返回无gender字段时崩溃。 - 分类输出:将姓名按男性、女性、无法识别三类分别存储并输出,结果清晰直观。
- 使用提示:将代码中的
file_path替换为你的姓名文件路径即可运行。
内容的提问来源于stack exchange,提问作者user19055220
相关产品推荐
相关产品推荐

