-3

好的,我有一个名为“relationships.txt”的文本文件,其中包含以下内容:

Elizabeth: Peter, Angela, Thomas
Mary: Tom
Angela: Fred, Alison
Alison: Beatrice, Dick, Harry

mother Elizabeth
mother Tom
mother Angela
mother Gurgle

前 4 行设置为 Mother:Child、Child、Child 等。最后 4 行是应该返回结果的语句。例如:

mother Elizabeth应该返回:Mother not known

尽管

mother Tom应该返回:Mary

我打算创建一个字典来让它工作,但我不知道该怎么做。帮助表示赞赏。

到目前为止,我有以下内容:

test_file = open('relationships.txt', 'w')
test_file.write('''Elizabeth: Peter, Angela, Thomas
Mary: Tom
Angela: Fred, Alison
Alison: Beatrice, Dick, Harry

mother Elizabeth
mother Tom
mother Angela
mother Gurgle
''')
test_file.close()

def create_list():
    open_file = open('relationships.txt', 'r')
    lines = open_file.readlines()
    return(lines)
4

1 回答 1

0

我没能完成,已经很晚了,但这应该让你开始,用一个元组列表将孩子绑定到他们的母亲。
这有点 hacky,但是你的文件结构很奇怪(我仍然不明白为什么你必须使用这样的东西)。

import re

rel = {}

with open("test/relationships.txt") as f:
    for line in f:
        # Valid Mother: Child, Child, [..]
        try:
            # Remove newliens and spaces
            line = re.sub('[\n ]', '', line)
            mother = line.split(':')[0]
            children = line.split(':')[1].split(',')

            # Append a tuple (child, mother)
            for c in children:
                rel.append((c, mother))

        # Something else, ignore for now
        except:
            continue

print rel

给出:

[('Peter', 'Elizabeth'), ('Angela', 'Elizabeth'), ('Thomas', 'Elizabeth'), ('Tom', 'Mary'), ('Fred', 'Angela'), ('Alison', 'Angela'), ('Beatrice', 'Alison'), ('Dick', 'Alison'), ('Harry', 'Alison')]

所以剩下的就是解析 中的孩子的名字mother child,看看 child 是否是列表中的键。

于 2013-05-15T01:59:12.467 回答