组合两个列表项的标准

时间:2016-03-18 01:44:59

标签: python

我正在编写支持语音的个人助理。它可以发送电子邮件,查看天气和打开网站。

我正在使用Google Voice API将语音转换为语音。当我说"打开搞笑点reddit dot com"时,谷歌认为它是有趣的。 Reddit.com&#34 ;.因此,我需要一种方法,在'。'之前将其与字母组合在一起,以及.com。

text = ['open', 'funny.', 'Reddit.com']
if 'open' in text:
        print(text)
        text = text.split()
        sub = 'com'
        www = 'www'
        wcheck = ("\n".join(s for s in text if www in s))
        website = ("\n".join(s for s in text if sub in s))
        if 'www' in wcheck:
            web.open(website)
        if 'www' not in wcheck:
            web.open('www.' + website)

1 个答案:

答案 0 :(得分:1)

仅组合满足特定条件的列表元素的一般方法是首先创建一个较小的列表,其中仅包含符合所述条件的项目。在您的情况下,此列表将为['funny.', 'Reddit.com']。您可以使用列表解析来创建它:

[e for e in text if e.endswith((".",".com",".net",".org",".edu",".gov"))]

您的案例的完整答案:尝试加入URL中的每个元素,以创建完整的网址。

URL = "".join([e for e in text if e.endswith((".",".com",".net",".org",".edu",".gov"))])

我认为这涵盖了大多数网站。例如:

>>> text=["open","funny.","reddit.com"]
>>> print "".join([e for e in text if e.endswith((".",".com",".net",".org",".edu",".gov"))])
funny.reddit.com

请注意,这仅适用于简单情况,而不适用于["google.com", "open", "funny.", "reddit.com"]这样会导致"google.com.funny.reddit.com"的情况。我假设您的所有输入都相对简单。