【发布时间】:2021-07-25 11:32:25
【问题描述】:
所以我有一个字符字典和他们的昵称。
namedict = {"Harry Potter": ["Harry","Harry Potter"]}
我想写一个函数来检测名字是否出现在句子中,如果存在,角色的情绪状态是什么。
import text2emotion as te
def emotion(character, text):
with open(text,'r') as f:
for name, nickname in namedict.items():
if character in name:
print(str(character)+"\n")
line = 1
for lines in f:
if (alias in lines for alias in nickname):
print("line "+str(line))
print(te.get_emotion(line))
line += 1
else:
print("character not found")
当我用我的文本文件运行代码时,它只返回每一行,显然它没有从循环中获取名称列表中不存在的字符。
【问题讨论】:
-
这是一个简单的课程小组项目,所以我们会忽略情绪数据是否来自角色。
-
l和te定义在哪里?它们是全局变量吗? -
if character in name不对。character应该在这里是什么?您在寻找单个字符吗?如果是这样,那么你根本不需要for语句,只需要if character in namedict:,但这里没有任何东西在看text。函数的目的是什么? -
您打开文件一次,然后
enumerate()ing 多次。每次在第一次之后都会产生零行,因为文件位置将在文件的末尾 - 没有什么比这点要多读的了。 -
可能首先使用
print()来查看变量中的值以及执行了哪部分代码。它被称为'print debuging'
标签: python if-statement text