Python - 从诗歌中创造一个短语

时间:2014-02-24 00:55:08

标签: python

鉴于一首诗,我将如何使用以下内容构建短语:

这些数字是短语所在的坐标,行和列。 (1,1),(1,20),(3,60)

我的问题是,是否有人知道如何实现这一目标?

1 个答案:

答案 0 :(得分:2)

好的,我会通过猜测来解决你的问题:

让你的诗成为一个文本文件,使它有一堆单词,最后是一个行尾字符(你只需点击输入即可编写)。该文件看起来像这样:

This is a poem
with many lines
much much lines.

现在您保存此文件并在同一文件夹上创建python脚本,以便您可以轻松打开它。

您的脚本现在将执行两项操作:首先使用您的诗打开文件并将其存储为字符串列表。这意味着我们将数组中的每个元素视为诗中的一行(第一个坐标点),每个元素由单词(第二个元素)组成。

因此,在代码中,您的脚本如下所示:

lines = []

with open('poem.txt', 'r') as poem:
    for raw_line in poem:
        line = raw_line.strip()
        lines.append(line.split(" "))

如果我们打印我们的行数组,我们得到:

[['This', 'is', 'a', 'poem'], ['wtih', 'many', 'lines'], ['much', 'much', 'lines.']]

所以要完成,你的短语制作函数可以接受一个坐标数组,并将这些单词从行数组中带出来:

def phrases(coords, poem):
    '''Takes in an array of tuples with x and y coordinates where x is
    the line number and y is the word on that line. Also takes in the
    poem array'''
    phrase = ""
    for coordinate in coords:
        line = coordinate[0]
        word = coordinate[1]
        phrase += poem[line][word] + ", "

    # this is messy cause there's a lagging comma space at the end but
    # figure that out later.

    return phrase[:len(phrase)-2]

如果我们给它我们的诗和范围内的三个坐标将产生:

print phrases([(0,0), (1,2), (2,2)], poem)

会产生一个短语:

This, lines, lines.

总结:将您的诗存储为行列表,每行由单词组成。坐标系是(线,字)。希望这是你的想法。