【问题标题】:Generating random comments with python from a text source使用 python 从文本源生成随机评论
【发布时间】:2015-12-15 04:06:50
【问题描述】:

我在 wikipedia 上阅读了有关 Article spinning 的信息,我正在尝试创建一个从文本源执行相同操作的函数。

例如,文本源可以是:

{Hello|Hi|Howdy}{ ,I {really like|absolutely adore} your {picture|media|upload}|{, how are you?|, are you ok?}}

一些可以生成的随机cmets:

Hello, I really like your picture
Hi, I absolutely adore your upload
Hi, how are you?
and so on...

我的主要问题是阅读括号之间的单词。我目前正在使用文本正则表达式,但 python 只考虑第一个和最后一个括号,所以这就是我得到的:

Hello|Hi|Howdy}{ ,I {really like|absolutely adore} your {picture|media|upload}|{, how are you?|, are you ok?}

【问题讨论】:

  • 请出示您的代码,否则我们无法真正帮助您。这似乎是一个经典的贪婪与非贪婪正则表达式问题

标签: python regex random spinner


【解决方案1】:
import random

list_a = ['Hello', 'Hi', 'Howdy']
list_b = ['really like', 'absolutely adore']
list_c = ['picture', 'upload']

word_a = random.choice(list_a)
word_b = random.choice(list_b)
word_c = random.choice(list_c)

print "{0}, I {1} your {2}.".format(word_a, word_b, word_c)

【讨论】:

    【解决方案2】:

    我自己做的。

    def pick_random_word(self, match):
        words = match.group(1)
        return random.choice(words.split("|"))
    
    def write_comment(self, comment):
        r = re.compile('{([^{}]*)}')
        while True:
            comment, n = r.subn(self.pick_random_word, comment)
            if n == 0:
                break
        print(comment)
    
    #USAGE: self.write_comment("{{so|totally} ugly|very {nice|bad}} {photo|media|upload} {:)||:D|<3}")
    

    它将打印:

    totally ugly photo 
    so ugly media :D
    very bad photo <3
    and so on...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-26
      • 1970-01-01
      • 2013-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多