如何找到常用单词并使用python命令打印它们?

时间:2012-08-13 17:05:35

标签: python-3.x

我想从两个word文档中交叉检查名称,然后在同一程序中打印常用名称。我该怎么办?我是否使用正则表达式或只是使用in函数。一个简单的例子非常有用。

-Thanks。

5 个答案:

答案 0 :(得分:7)

一旦你有Word文档中的文本,它真的很容易:

document_1_text = 'This is document one'
document_2_text = 'This is document two'

document_1_words = document_1_text.split()
document_2_words = document_2_text.split()

common = set(document_1_words).intersection( set(document_2_words) )
unique = set(document_1_words).symmetric_difference( set(document_2_words) )

如果您不确定如何从Word文档中获取文本:

from win32com.client import Dispatch

def get_text_from_doc(filename):
    word = Dispatch('Word.Application')
    word.Visible = False
    wdoc = word.Documents.Open(filename)
    if wdoc:
        return wdoc.Content.Text.strip()

答案 1 :(得分:0)

您需要存储一个文档中的单词,然后查看第二个文档中的单词,检查每个单词是否在上一个文档中。所以,如果我有两个字符串而不是文档,我可以这样做:

a = "Hello world this is a string"
b = "Hello world not like the one before"

将字词存储在字符串中:

d = {}
for word in a.split():
  d[word] = true
for word in b.split():
  if d[word]:
    print(word)

答案 2 :(得分:0)

str1 = "Hello world its a demo"
str2 = "Hello world"

for ch in str1.split():
  for ch2 in str2.split(): 
      if ch == ch2:
          print ch

答案 3 :(得分:0)

str1 = "Hello world its a demo"

str2 = "Hello world"

str1_words = set(str1.split())

str2_words = set(str2.split())

common = str1_words & str2_words

输出:

common = {'Hello', 'world'}

答案 4 :(得分:0)

刚来这个帖子,没有看到这个方法,所以我只想补充一下你 可以这样做:

from collections import Counter

foo = "This is a string"
bar = "This string isn't like the one before"

baz = Counter(foo.split(" ")) + Counter(bar.split(" "))
baz = sorted(baz, reverse=True, key=lambda x: x[1])

Baz 现在是一个看起来像这样的 dict

Counter({'This': 2, 'string': 2, 'is': 1, 'a': 1, "isn't": 1, 'like': 1, 'the': 1, 'one': 1, 'before': 1})

现在你可以看到这两个字符串有"This""string"的共同点

您还可以在使用 Counter 之前使用 .lower() 将所有字符串(foobar)转换为小写() 在他们身上,所以一切都是平等的