查找用户名性别的方法 - 有或没有字典

时间:2013-11-21 10:50:27

标签: python text

我正试图找到一种方法来做两个动作: 1)从名称中检索性别 2)从用户名中检索性别(类似于前一个但不同)

我回顾了一些方法1)(包括:Does anyone know of a good library for mapping a person's name to his or her gender?),并且可能会这样做,但我有一个问题要做第二个:

假设我有一本字典,其中包含所有分为女性或男性的名字。现在我想拿一个用户名并尝试查看用户名是否包含其中一个名称(因为用户名可以包含的不仅仅是名字本身) - 最好的方法是什么?查看所有dict键并逐个用户名查找它们似乎效率不高......必须有一个优化的方法......

希望我能清楚地解释自己,非常感谢任何帮助!!

1 个答案:

答案 0 :(得分:0)

字典仅在用户名(或名称)完全匹配的情况下才有用。最好使用一个简单的列表:

确保girl_namesboy_names中包含的姓名完全针对性别。 (例如,本不会工作,因为男人和女人都可以去Ben。)同时确保这些名单没有任何重复的部分名称,例如。 “Al”和“Albert”。

girl_names =一大堆可能仅限女性的名字,都是小写的。

boy_names =大量可能仅限男性的名字,均为小写。

user_name =您正在查找的用户名。

def name_gender(user_name, boy_names=None, girl_names=None):
    uname = user_name.lower()
    girliness = 0
    for girl_name in girl_names:
        if girl_name in uname:
            girliness += 1
    boyishness = 0
    for boy_name in boy_names:
        if boy_name in uname:
            boyishness += 1
    if boyishness > girlishness: return 'Male'
    if girlishness > boyishness: return 'Female'
    return 'Androgynous'

此功能只是实际用户名性别的松散代理。可以从各种网站获得常用名称列表,也可以从人口普查信息中获取。