2013-03-01 15 views
0

我很新,我不知道最好的方式去做這件事。我四處搜尋,我已經解決了我的大部分問題,但沒有解決這個問題。創建一個推特機器人 - 需要幫助提取一個字符串

我有一個充滿隨機詩的文本文件。爲了測試的目的,它是lorem ipsum。我想要做的是從這個隨機抽取一個140個字符的部分。不過,我只希望它包含完整的單詞,所以要砍掉開始並結束到空間。

例如。

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent convallis nibh vitae ante dictum gravida. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Vivamus scelerisque accumsan ante, quis porttitor libero tincidunt vel. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent ullamcorper ornare metus quis pulvinar. Nullam at magna mauris. Aenean nec arcu odio.

使用機器人,我可以提取:

tibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Vivamus scelerisque accumsan ante, quis porttitor liber

那麼這將被截斷爲:

ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Vivamus scelerisque accumsan ante, quis porttitor

基本上我試圖創建一個horse_ebooks像機器人是採取隨機文件中隨機詞的字符串並將它們發佈到twitter上。我已經把所有的帖子都整理出來了,我只需要提取字符串的方法。

回答

1
from random import random: 

text = """Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent convallis nibh vitae ante dictum gravida. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Vivamus scelerisque accumsan ante, quis porttitor libero tincidunt vel. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent ullamcorper ornare metus quis pulvinar. Nullam at magna mauris. Aenean nec arcu odio."""

poem_init = int(random()*(len(text)-140)) 
poem = text[poem_init:poem_init+140].split(" ") 

if text.find(" "+ poem[0]) < 0: 
    del poem[0] 

if text.find(poem[-1] + " ") < 0 or text.find(poem[-1]) != len(text): 
    del poem[-1] 

poem = " ".join(poem) 
print poem 
+0

我一直在'poem_init = int(random()*(len(text)-140))'行中收到「TypeError:'模塊'對象不可調用'。我不知道這意味着什麼,我似乎無法用我有限的知識來解決它。我知道它在做什麼(從文本長度-140產生一個隨機數的int,所以它沒有超過)用作起點,但它不是玩的開心。 – Jademalo 2013-03-01 01:56:23

+0

我認爲你不是隻導入隨機的,所以如果你使用**導入隨機**,那麼你可以使用** poem_init = int(random.random()*(len(text)-140))** – 2013-03-01 02:03:15

+0

沒關係,必須是'random.random()'。謝謝! **編輯**運行它,它似乎不像代碼的後半部分工作,它不會在空間上截斷它。 ** EDIT2 **並沒有修改,現在正在工作......什麼? – Jademalo 2013-03-01 02:03:35

0

你可以提取一首詩的前140個字符。

final_poem = poem_string[:140] 

然後,爲了簡單起見,您可以找到最後一個空間的位置,並從該空間開始切斷所有內容。

for i, char in enumerate(reversed(final_poem)): 
    if char == ' ': 
     chop = i + 1 # Remember indices start with 0 
final_poem = final_poem[:-chop] 

可能不是最有效的代碼,但它可以完成工作。

+0

這看起來像它可以工作! 我會試着弄清楚如何從隨機的位置開始,並且也要從頭開始。 謝謝! – Jademalo 2013-03-01 01:42:12

相關問題