python - 如何检查一个单词是否属于一个或另一个数组?
问题描述
我正在尝试逐字阅读文本文件,然后将该单词与一组分类数组(快乐、悲伤、愤怒等)进行比较,如果它在该数组中,则添加该数组的标识符(唯一分配给他们的号码)到一个空列表。
这就是我所拥有的:
anger = ['abandoned', 'abandonment', 'abhor', 'abhorrent', 'abolish',....]
joy = ['absolution', 'abundance', .....]
sadness = ['abandoned', ....]
trust = ['example word']
# Python program to read
# file word by word
DNA = []
# opening the text file
with open('ch1.txt','r', encoding="utf8") as file:
# reading each line
for line in file:
# reading each word
for word in line.split():
if word in joy:
DNA.append('6');
# reading each line
for line in file:
# reading each word
for word in line.split():
if word in anger:
DNA.append('2');
# reading each line
for line in file:
# reading each word
for word in line.split():
if word in fear:
DNA.append('5');
# reading each line
for line in file:
# reading each word
for word in line.split():
if word in sadness:
DNA.append('7');
# reading each line
for line in file:
# reading each word
for word in line.split():
if word in trust:
DNA.append('9');
# reading each line
for line in file:
# reading each word
for word in line.split():
if word in surprise:
DNA.append('8');
# reading each line
for line in file:
# reading each word
for word in line.split():
if word in disgust:
DNA.append('4');
print("Emotional DNA: " ,DNA)
我想要代码做的是这样的:
if word is in anger:
add anger to the list;
or if word is in sadness:
add sadness to the list;
该词也可以出现在多个类别中,在这种情况下,两个类别标识符都应该附加到列表中。
这是我期望的输出:
2, 2, 2, 4, 6, 4, 2, 3, 3, 4,8, 4, 5
总之,我想要的是匹配正在读入的单词以查看它是否属于一个(或多个)类别,然后将该类别的标识符添加到空列表中。这是在文本文件中一一映射这些情绪类别的进展。
当前代码发生的事情是它只是阅读第一个 if 语句并给我这个:
6, 6, 6, 6, 6, 6, 6
当我尝试用 elif 替换第一个语句之后的 if 语句时,只读取了前两个语句而忽略了其他语句。我不知道如何使这个 if-else-if 梯子工作,任何帮助将不胜感激。
解决方案
你应该只通读一遍台词和单词。然后针对该循环内的每个列表测试单词。
for line in file:
for word in line.split():
if word in joy:
DNA.append('6')
if word in anger:
DNA.append('2')
if word in fear:
DNA.append('5')
# and so on
你只得到一组数字,因为在你读完文件之后,下一个for line in file
循环就没有什么要读的了。你可以先倒带file.seek(0)
,然后你会得到所有的6
,然后是所有的2
,等等。你不会知道它们在文件中实际发生的顺序。
顺便说一句,如果单词列表很大,您应该使用集合而不是列表。
推荐阅读
- jquery - jquery-migrate:过滤掉来自特定文件的警告?
- apache-kafka - Kafka Connect 转换 - 小写的 RegexRouter 替换主题名称
- linux - 未显示 Raspberry Pi 的 CPU 缓存信息
- c# - 为什么我会收到“System.IO.FileLoadException:无法加载文件或程序集”错误?与 iText7
- c# - 当 Process.WaitForExit() 不等待时
- javascript - Javascript - 仅将 onclick 设置为页面的第一部分
- python - pipenv:已安装软件包但未找到模块
- c# - C# HttpListener - 503 不可用(2 个应用程序,2 个前缀)
- sql - 来自两个表oracle SQL的所有记录对
- angular - Angular 浏览器缓存清除不起作用