【问题标题】:How to search for a set of words in a text file?如何在文本文件中搜索一组单词?
【发布时间】:2018-06-15 07:46:12
【问题描述】:

我正在编写一个关于从存储在文本文件中的评论中提取语义方向的项目。 我有一个 400*2 数组,每行包含一个单词和它的权重。我想检查这些单词中的哪些在文本文件中,并计算整个内容的权重。

我的问题是——

最有效的方法是什么?我是否应该分别搜索每个单词,例如使用 for 循环? 将文本文件的内容存储在字符串对象中是否有任何好处?

【问题讨论】:

  • 您的问题含糊不清。请阅读How to Ask 并提供minimal reproducible example
  • 您想知道是否有任何数组词至少存在一次?或者你想要对数组中的每个单词进行计数吗?
  • 我使用 400x2 阵列。每行在第一个单元格中包含一个单词,在第二个单元格中包含一个权重。我想在文本文件中搜索这些词并计算它的内容权重。
  • @Vic,请用该评论更新您的问题,提供您拥有的输入和您想要的输出
  • 我这样做了,谢谢:)

标签: python arrays text


【解决方案1】:

https://docs.python.org/3.6/library/mmap.html

这可能对你有用。您可以使用查找

【讨论】:

  • bur 为此,我需要对数组中的每个单词进行单独的迭代,不是吗?
  • 我认为你可以使用正则表达式而不是每个单词单独的迭代
【解决方案2】:

这可能是开箱即用的想法,但如果您不关心单词的语义/语法连接:

  • 按长度对文本中的所有单词进行排序
  • 按长度对数组进行排序

.

  • 写一个for循环:
  • 对文本中的每个单词调用len()(长度)。
  • 然后只检查那些长度相同的单词。

通过一些修补,它可能会为您带来良好的性能提升,而不是“幼稚”的搜索。

如果您想获得额外的提升(关于查找(400 个中的)第一个单词(例如 6 个字母)),还请研究搜索算法 - 然后“向下”搜索列表,直到出现第一个包含 5 个字母的单词,然后停下来。

另外,假设您的单词没有改变,您也可以使用所有 5 字母单词的第一个和最后一个的索引构建一个索引数组(其余为类比)。

【讨论】:

  • 这是一个非常好的主意,但我的错误是我没有提到某些单元格包含诸如“表现出色”之类的表达,而不仅仅是一个词。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-04
  • 2011-04-21
  • 2015-01-31
  • 2016-08-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多