我在urbandictionary写了一个简单的翻译脚本:
import urllib.request
import bs4
def translate():
search=''
while(search!='!'):
search=input("Enter a word(! for exit): ")
if search=='!':
continue
search2=search.replace(' ','+')
urb_url='http://www.urbandictionary.com/define.php?term='+str(search2)
urban=urllib.request.urlopen(urb_url).read().decode('utf-8')
soup_urb = bs4.BeautifulSoup(urban)
try:
q2=soup_urb.find('div', class_="meaning").text
print("{0}: {1}".format(search,q2))
except AttributeError as e:
print("The word not found\n")
现在我想保存搜索到的每个单词的结果,并且以后不再搜索。你的建议是什么? sqlite,保存在简单文本或其他解决方案中。
答案 0 :(得分:2)
如果您计划向应用程序添加功能或者数据量可能会变大,SQLite是一种很好的方法:您可以将表添加到数据库和/或处理有用的SQL请求。
然而,它增加了您的架构的复杂性:使用数据库,使用SQL请求。
您也可以使用dictionary,其中键是“搜索”。和价值观是' q2'并使用pickle模块(Python对象序列化)存储它。这样,如果您的目的只是存储并获得翻译,那么您可以保持简单。
答案 1 :(得分:1)
您可以使用sqlite3
或任何数据库。试试这个
import sqlite3
conn = sqlite3.connect('test.db')
try:
conn.execute('''CREATE TABLE urbandictionary
(SEARCH_WORD TEXT NOT NULL,
SEARCH_STRING TEXT NOT NULL)''')
print "Table created successfully";
except:
pass
conn.close()
然后在你的print语句行中,输入
conn = sqlite3.connect('test.db')
conn.execute("INSERT INTO urbandictionary (SEARCH_WORD, SEARCH_STRING) \
VALUES (?,?)", [search, q2])
conn.commit()
conn.close()
要查看结果,
conn = sqlite3.connect('test.db')
cur = conn.execute('select * from urbandictionary')
res = [dict(search_word=row[0], search_string=row[1]) for row in cur.fetchall()]
conn.close()
>>>res #gives you output