为了账号安全,请及时绑定邮箱和手机立即绑定

如何将一个列表与一个句子匹配并带上带有 id - words 格式的单词列表

如何将一个列表与一个句子匹配并带上带有 id - words 格式的单词列表

皈依舞 2021-11-02 09:55:34
我有一堆身份证和他们的句子。我需要将此数据与单词列表进行比较。我希望我的输出能够从与单词列表匹配的句子中获取 ID 和相应的单词。我尝试在 Excel 中完成它们,方法是将文本转换为列,然后转置列表,然后进行条件格式设置。但是真的不可能像那个时候有这么多词的句子,而且有很多句子。有没有办法通过 python 编程来完成它们输入: | ID | data                 |    | List | |----|----------------------| .   hello | 1  | hello can you hear me| .   love | 2  | roses are red        | .   water | 3  | water is life        | .   roses | 4  | pie                  | .   pie | 5  | I love chicken pie   | .   chicken |----|----------------------| .   hear                                   red预期输出: | ID | data   | |----|--------| | 1  | hello  | | 1  | hear   | | 2  | roses  | | 2  | red    | | 3  | water  | | 4  | pie    | | 5  | love   | | 5  | chicken| | 5  | pie    |
查看完整描述

1 回答

?
隔江千里

TA贡献1906条经验 获得超10个赞

假设您有一个包含 ID 和句子的 csv 表sentences.csv,以及一个包含单词列表的文本文件words.txt,您可以执行以下操作:


import csv


words = set(l.strip() for l in open('words.txt'))

table = []

with open('sentences.csv') as f:

    for sid,sentence in csv.reader(f):

        table += [[word, sid] for word in sentence.split() if word in words]

csv.writer(sys.stdout).writerows(table)

这是表达这一点的紧凑方式,并且在错误检查方式中没有做太多事情。例如,如果 csv 文件中的某些行中没有 2 个单元格,则循环将崩溃。更简单地说,可以将表解析表示为:


 table = [[word,sid] for sid,sentence in csv.reader(open('sentences.csv'))

                     for word in sentence.split() if word in words]

两者都给出了预期的输出


hello,1

hear,1

roses,2

red,2

water,3

pie,4

love,5

chicken,5

pie,5


查看完整回答
反对 回复 2021-11-02
  • 1 回答
  • 0 关注
  • 187 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号