LovelyWei's 废纸篓

A Noob.

LovelyWei's avatar LovelyWei

按名字判断班级小姐姐的数量

大学快要开学了,我通过py关系弄到了一份班级的列表,但是没有性别,正好这几天看到一个通过名字猜测性别的库

通过姓名猜测性别

https://github.com/observerss/ngender

在最近,发现了一个ngender库,作用只有一个 通过姓名猜测性别,使用方式也很简单

pip install ngender

>>> import ngender
>>> ngender.guess('赵本山')
('male', 0.9836229687547046)
>>> ngender.guess('宋丹丹')
('female', 0.9759486128949907)

开始实践想法

xls转csv

首先通过Excel将.xls文件另存为 CSV 文件,因为Python自带CSV库,操作起来比操作xls文件简单(

逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)

source大概长这样

转化为CSV后开始写代码

import csv
import ngender


new_csv = []
with open('list.csv','r',encoding='utf-8') as f:
    reader = csv.reader(f)
    next(reader)
    for row in reader:
        guess = ngender.guess(row[2])
        row.append(guess[0])
        row.append(round(guess[1]*100,3))
        new_csv.append(row)
    
with open('test.csv','w',newline='')as f:
    f_csv = csv.writer(f)
    f_csv.writerows(new_csv)

遇到的两个坑

  • open的编码格式
    Excel转的CSV是UTF-8编码的,众所周知 Python在中文Windows系统下的默认编码是GBK 所以open的时候要加上encoding='utf-8'
  • 保存时的默认新行
    保存的结果每一行都会多一行,将newline设置为空字符串就好了

效果

打开保存好的Excel,简单排序一下

后记

根据判断我们班有9个小姐姐,后面去问了下辅导员,实际上是八个,误差不大(

接下来可能没时间搞这些了,开学还要考英语,几个月没碰过全白给了,呜呜呜

This blog is under a CC BY-NC-SA 3.0 Unported License
Link to this article: https://hex.moe/p/f20b6b14/