“一个”中的参数太多;如果;子句,在jupyter笔记本和python中

“一个”中的参数太多;如果;子句,在jupyter笔记本和python中,python,python-3.x,jupyter-notebook,Python,Python 3.x,Jupyter Notebook,我的if子句中的参数似乎太多了。是因为我在使用字符串吗 下面是代码的一个版本: gender = [] for f in full_text: if any (["He" in f, "boy" in f, "him" in f, "his" in f]): gender.append(0) elif any (["She" in f, "girl" in f, "her" in f, "hers" in f]): gender.append(1

我的
if
子句中的参数似乎太多了。是因为我在使用字符串吗

下面是代码的一个版本:

gender = []

for f in full_text:
    if any (["He" in f, "boy" in f, "him" in f, "his" in f]):
        gender.append(0)
    elif any (["She" in f, "girl" in f, "her" in f, "hers" in f]):
        gender.append(1)
    else:
        gender.append(-1)
这只打印0和-1,即使在
全文中有许多女性

如果我只运行一个男性和女性语句(并不是所有男性和女性都被捕获),我会得到一个“正确”的结果,包括1:

以下是
全文
的示例:

full_text = ["This is Phineas. He's a mystical boy. Only eve...", 
             "This is Tilly. She's just checking pup on you....",
             "This is Archie. He is a rare Norwegian Pouncin...",
             "This is Darla. She commenced a snooze mid meal...",
             "Hello"]
无论
She
(或任何其他女性代词)出现在哪里,都应该有1


有什么想法吗?

关于什么可能导致问题的一些想法:

  • 如果句子是“她和他在一起”,则输出为0。这就是你想要的吗
  • “她”、“她”和“她的”包括“他”
假设代码> f>代码>是一个包含空格分隔的多个单词的字符串,你应该考虑降低文本并拆分单词:

for f in full_text:
    words = f.lower().split(" ")
    if any (["he" in words, "boy" in words, "him" in words, "his" in words]):
        gender.append(0)
    elif any (["she" in words, "girl" in words, "her" in words, "hers" in words]):
        gender.append(1)
    else:
        gender.append(-1)

关于什么可能导致问题的一些想法:

  • 如果句子是“她和他在一起”,则输出为0。这就是你想要的吗
  • “她”、“她”和“她的”包括“他”
假设代码> f>代码>是一个包含空格分隔的多个单词的字符串,你应该考虑降低文本并拆分单词:

for f in full_text:
    words = f.lower().split(" ")
    if any (["he" in words, "boy" in words, "him" in words, "his" in words]):
        gender.append(0)
    elif any (["she" in words, "girl" in words, "her" in words, "hers" in words]):
        gender.append(1)
    else:
        gender.append(-1)

对于每个
f
,if语句对
any([“He”在f中,“boy”在f中,“him”在f中,“his”在f中])进行第一次检查
True
0
附加到
gender
,并且代码转到下一个
f
,而不执行
elif
部分,因此,永远不会追加
1
。我将其更改为通过将
f
拆分为一个列表逐字检查。我还需要在支票上加上他/她,因为按空格分割不能很好地处理收缩

for f in full_text:
    found = False
    for word in f.lower().split(" "):
        if word in ["he", "boy", "him", "his", "he's"]:
            found = True
            gender.append(0)
        elif word in ["she", "girl", "her", "hers", "she's"]:
            found = True
            gender.append(1)
    if not found:
        gender.append(-1)

对于每个
f
,if语句对
any([“He”在f中,“boy”在f中,“him”在f中,“his”在f中])进行第一次检查
True
0
附加到
gender
,并且代码转到下一个
f
,而不执行
elif
部分,因此,永远不会追加
1
。我将其更改为通过将
f
拆分为一个列表逐字检查。我还需要在支票上加上他/她,因为按空格分割不能很好地处理收缩

for f in full_text:
    found = False
    for word in f.lower().split(" "):
        if word in ["he", "boy", "him", "his", "he's"]:
            found = True
            gender.append(0)
        elif word in ["she", "girl", "her", "hers", "she's"]:
            found = True
            gender.append(1)
    if not found:
        gender.append(-1)


什么是示例
full_text
数据集,您希望该数据集的输出是什么?您是否有一个字符串示例,该字符串在第一个版本中应为1,但没有?我觉得还可以。你的代码看起来不错
f=“他说她说”;任何([“他”在f中,“男孩”在f中,“他”在f中,“他的”在f中])都给出True
。您需要向我们发布一个输入失败的示例()。您还应该降低两个文本的对比度,以您的示例“he is English”为例,不会检测到男性。请显示我们可以运行的完整代码片段,以显示您的问题。换句话说,请阅读并遵循。什么是示例
全文
数据集,您希望该数据集的输出是什么?您是否有一个字符串示例,该字符串的第一个版本应为1,但没有?我觉得还可以。你的代码看起来不错
f=“他说她说”;任何([“他”在f中,“男孩”在f中,“他”在f中,“他的”在f中])都给出True
。您需要向我们发布一个输入失败的示例()。您还应该降低两个文本的对比度,以您的示例“he is English”为例,不会检测到男性。请显示我们可以运行的完整代码片段,以显示您的问题。换句话说,请阅读并遵循。这给出了7个结果,而应该有5个。我在以下数据集上运行了它:全文=[“这是菲尼亚斯。他是一个神秘的男孩。只有伊芙…”,“这是蒂莉。她只是在检查你的小狗…”,“这是阿奇。他是一个罕见的挪威庞钦…”,“这是达拉。她在吃饭的时候开始打盹…”,“你好”],我算出了
注册了
。哎呀,它仍然给出了七个值。我根据你的回答修改了答案。它不起作用。0和1与df不相关。当应该有5个结果时,这给出了7个结果。我在以下数据集上运行了它:全文=[“这是菲尼亚斯。他是一个神秘的男孩。只有伊芙…”,“这是蒂莉。她只是在检查你的小狗…”,“这是阿奇。他是一个罕见的挪威庞钦…”,“这是达拉。她在吃饭的时候开始打盹…”,“你好”],我算出了
注册了
。哎呀,它仍然给出了七个值。我根据你的回答修改了答案。它不起作用。0和1与df不相关。在我取出
lower()
后,这起作用了!这将包括
。为什么我们不对每个结果都用
文字
?没错,应该是
文字
到处都是,我的复制和粘贴都搞砸了!我编辑了我的答案,在我拿出
lower()
之后,这个答案成功了!这将包括
。为什么我们不对每个结果都用
文字
?没错,应该是
文字
到处都是,我的复制和粘贴都搞砸了!我编辑了我的答案