2013-03-01 18 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

相关问题