4

入力ファイルからテキストを取得し、カットアップ手法 (http://en.wikipedia.org/wiki/Cut-up_technique) に基づいたクリエイティブ ライティング プロジェクトの単語をランダムに並べ替える Python スクリプトを作成しました。

現在のスクリプトは次のとおりです。NB: サーバー側のインクルードとしてこれを実行しています。

#!/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」や「II I」など、シーケンス内の重複を特定したいだけです。たとえば、「the」が出力全体で 1 回しか表示されないようにしたくありません。

この問題の解決を開始するために、誰かが私を正しい方向に向けることができますか? (私のバックグラウンドはプログラミングではありません。そのため、基本的にこのスクリプトは、Python のマニュアルをよく読んだり、このサイトを閲覧したりしてまとめています。どうぞお手柔らかにお願いします。)

4

3 に答える 3

5

重複のない単語を生成するジェネレータを作成できます。

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

次に、これをプログラムで使用できます。

cutUpText = " ".join(nodups(srcList))
于 2012-12-15T13:54:36.440 に答える
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));

テキスト画面に生の書式設定をもたらすのに役立ちます。

于 2012-12-15T14:43:08.307 に答える
0

これを既存のプログラムに追加します。

srcList = list(set(srcText.split()))
于 2012-12-20T10:20:00.123 に答える