从python脚本中生成的文本中删除重复的单词

时间:2012-12-15 13:47:08

标签: python string text duplicates

我创建了一个python脚本来从输入文件中获取文本,并根据切割技术(http://en.wikipedia.org/wiki/Cut-up_technique)随机重新排列创意写作项目的单词。

这是目前的脚本。注意:我正在运行这个作为服务器端包括。

#!/usr/bin/python
from random import shuffle 

src = open("input.txt", "r")
srcText = src.read()
src.close()

srcList = srcText.split()
shuffle(srcList)
cutUpText = " ".join(srcList)
print("Content-type: text/html\n\n" + cutUpText)

这基本上完成了我希望它做的工作,但我想做的一个改进是识别输出中的重复单词并将其删除。为了澄清,我只想识别序列中的重复项,例如“the the”或“I I I”。我不想这样做,例如,“the”只在整个输出中出现一次。

有人能指出我正确的方向来开始解决这个问题吗? (我的背景不是编程,所以我基本上把这个脚本放在python手册的大量阅读中并浏览这个网站。请对我温柔。)

3 个答案:

答案 0 :(得分:5)

您可以编写一个生成器来生成没有重复的单词:

def nodups(s):
    last = None
    for w in s:
        if w == last:
            continue
        yield w
        last = w

然后你可以在你的程序中使用它:

cutUpText = " ".join(nodups(srcList))

答案 1 :(得分:1)

添加行

spaces = [(i%10) == 9 and '\n' or ' ' for i in range(0,len(srcList))];
cutUpText = "".join(map(lambda x,y: "".join([x,y]),srcList,spaces));

有助于为文本屏幕带来一些原始格式。

答案 2 :(得分:0)

将此添加到您现有的程序中:

srcList = list(set(srcText.split()))