2016-03-18 155 views
3

我正在编程一个支持语音的个人助理。它可以发送电子邮件,检查天气,并打开网站。合并两个列表项的条件

我使用Google Voice API将我的声音转换为语音。当我说“Open funny dot reddit dot com”时,Google认为它是“有趣的”。 Reddit.com。”所以,我需要一种方法之前,做出这等事情‘’,是与.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) 
+0

prefix =“\ n”.join(s代表s中文本中的s) – Will

+0

我不完全确定你想要实际做什么。 'prefix =“\ n”。如果's'中的'%s。''加入(s代表文本中的s)'将通过换行符连接单词或字符。您不打算创建有效的网址吗? – jDo

+0

我的坏,我只是不知道该怎么办 – Will

回答

1

一般的方式来满足一定的条件,只有列表中的元素相结合首先创建一个只包含符合上述标准在你的情况,这个名单将是['funny.', 'Reddit.com']项目较小的列表,您可以用列表解析创建这样的:。

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

您的情况下,完整的答案:尝试加入其中的每个元素即为网址的一部分,以制作完整的网址。

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"。我假设你所有的输入都比较简单。

+1

e.endswith ...我将保存,谢谢你:D – Will