我想从两个word文档中交叉检查名称,然后在同一程序中打印常用名称。我该怎么办?我是否使用正则表达式或只是使用in函数。一个简单的例子非常有用。
-Thanks。
答案 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() 将所有字符串(foo 和 bar)转换为小写() 在他们身上,所以一切都是平等的