我正在尝试比较文件中的两个词

时间:2018-11-09 05:15:59

标签: python-3.x file

如果文件中的两个单词仅相差一个字母,则尝试比较文件中的两个单词并制作一个图形,单词为节点,连接为边。

我的节点掉线了。我只需要弄清楚如何做边缘。我有一个文件:words.txt。 words.txt的所有行下面都包含这些单词:

fools
cools
pools
polls
poles
pales
sales
sages

我正在尝试编写一个函数,该函数基本上在仅字母不同的单词之间创建一个边。我从这里开始:

FILE = open(words.txt, "r")
for line in FILE:
    **assign word1**? e.g., word1=fools
    **assign word2**? e.g., word2=cools

一旦分配了单词,我就可以将它们传递到我的另一个函数中,该函数比较它们并分配一个边,因为它们之间只有第一个字母不同。

1 个答案:

答案 0 :(得分:1)

这是一种实现方法,我刚刚添加了一条print语句来模拟节点。但是我相信您可以弄清楚如何自己构造图形。

buildscript {
    ext.kotlin_version = '1.3.0'
    ext.gradle_version = '3.0.1'

输出:

s = '''fools
cools
pools
polls
poles
pales
sales
sages'''

words = s.split('\n') # Do this properly according to your file structure
print(words)
for i in range(len(words)):
    word1 = words[i]
    for j in range(len(words)):
        word2 = words[j]
        res = [index for index in range(len(word1)) if word1[index] != word2[index]]
        if len(res) == 1: # They differ by one word
            print(word1,'---->', word2) # just arbitary node

这是一个可插入的功能,可能会对您有所帮助。

fools ----> cools
fools ----> pools
cools ----> fools
cools ----> pools
pools ----> fools
pools ----> cools
pools ----> polls
polls ----> pools
polls ----> poles
poles ----> polls
poles ----> pales
pales ----> poles
pales ----> sales
sales ----> pales
sales ----> sages
sages ----> sales

输出:

def differ_by_one_word(word1, word2):
    '''
    Returns True only if both the words differ by one letter
    '''
    res = [index for index in range(len(word1)) if word1[index] != word2[index]]
    if len(res) == 1:
        return True
    else:
        return False

print(differ_by_one_word('fools', 'pools'))
print(differ_by_one_word('fools', 'drools'))