我的report.txt包含
I am a student from Tribhuwan university
我正在尝试检查字典中的单词是否包含报告中的单词。但是,使用下面的代码,只有第一个元素的结果v为True。我认为,对于所有情况,v应该是正确的,因为字典中的所有单词都包含在报告中。请帮我弄清楚我在做什么错。
我的dictionary.txt
包含了
words, synonyms
I, me
student, pupil
tribhuwan,
university, school
import pandas as pd
report = pd.read_csv("report.txt", header=None)
dict = pd.read_csv("dictionary.txt")
for report in report[0]:
v = []
for word in dict['words']:
if word in report[0]:
v.append(True)
else:
v.append(False)
答案 0 :(得分:3)
您在这里不需要显式的for
循环。使用Pandas,您可以在数据框中添加额外的列,并使用pd.Series.isin
。您可能还需要将所有字母都小写以进行比较。最后,从不遮盖内置函数,即不要使用dict
作为变量名。
这是一个演示:
from io import StringIO
report = StringIO("""I am a student from Tribhuwan university
""")
dictionary = StringIO("""words, synonyms
I, me
student, pupil
tribhuwan,
university, school""")
df_report = pd.read_csv(report, header=None)
df_dict = pd.read_csv(dictionary)
words = df_report[0].str.lower().iat[0].split()
df_dict['check'] = df_dict['words'].str.lower().isin(words)
print(df_dict)
words synonyms check
0 I me True
1 student pupil True
2 tribhuwan NaN True
3 university school True