import wikipedia
import os
while True:
input = raw_input("Ques: ")
#To get output in a particular language ,
#This prints the results on spanish
#wikipedia.set_lang("es")
wiki = wikipedia.summary(input, sentences = 2).encode('utf-8').strip()
os.system("say " + wiki)
print wiki
在输出控制台上,它要求
Ques:
,当我输入Cristiano
它说"Cristiano is a Portuguese footballer"
但是当我键入Cristiano
(说Chelsea FC
)以外的任何内容时,它会显示
sh: -c: line 0: unexpected EOF while looking for matching `''
sh: -c: line 1: syntax error: unexpected end of file
OR
sh: -c: line 0: syntax error near unexpected token `('
答案 0 :(得分:1)
返回的wikipedia.summary()
值可能包含shell解释具有特殊含义的字符。您可以使用shlex.quote()
来转义此类字符:
import wikipedia
import os
import shlex
while True:
input = raw_input("Ques: ")
#To get output in a particular language ,
#This prints the results on spanish
#wikipedia.set_lang("es")
wiki = wikipedia.summary(input, sentences = 2).encode('utf-8').strip()
os.system("say " + shlex.quote(wiki))
print wiki
答案 1 :(得分:0)
我以前从未与wikipedia
第三方合作。但是,当我尝试您的代码时,发现只需要删除.encode('utf-8')
。对我来说这是工作。
wiki = wikipedia.summary(i, sentences=2).strip()
import wikipedia
import os
while True:
i = input("Ques: ")
#To get output in a particular language ,
#This prints the results on spanish
#wikipedia.set_lang("es")
wiki = wikipedia.summary(i, sentences=2).strip()
os.system("say "+ wiki)
print(wiki)
结果:Chelsea Football Club is a professional football club in London, England, that competes in the Premier League. Founded in 1905, the club's home ground since then has been Stamford Bridge.Chelsea won the First Division title in 1955, ...
。
或者,您可以使用另一个第三方,例如 pyttsx3 :pip install pyttsx3
。
代码将如下所示:
import wikipedia
import pyttsx3
engine = pyttsx3.init()
while True:
i = input("Ques: ")
wiki = wikipedia.summary(i, sentences=2).strip()
# os.system("say "+ wiki)
print(wiki)
engine.say(wiki)
engine.runAndWait()`
我希望它能提供帮助。