Python結(jié)合WPS多維表實現(xiàn)在線批量查詞功能
一、引言
Python是當(dāng)前人工智能時代最受歡迎的編程語言,越來越多的應(yīng)用程序把其整合到自身的功能當(dāng)中,WPS多維表就是最早接入Python代碼的應(yīng)用平臺。當(dāng)Excel365還在為Python的功能收費時,我東大國產(chǎn)文字處理工具WPS已經(jīng)將這一功能免費開放給全國用戶。本來多維表已經(jīng)是一場在線辦公領(lǐng)域的利器了,Python代碼更是為其添加了翅膀。下面以單詞查詢項目為例,簡要介紹如何在多維表中應(yīng)用Python代碼,實現(xiàn)批量單詞查詢的。
二、實現(xiàn)方法
1.初始化配置
打開http://docs.wps.cn,創(chuàng)建多維表,設(shè)置單詞、音標(biāo)、詞義三個字段。為了明確提交人,可以在字段管理那里添加一個提交人,這樣提交查詢?nèi)蝿?wù)者就會顯示出來,如下圖所示:

2. 配置PY代碼
點擊頂部的【腳本】——【Py代碼】把下面的代碼放入其中
import requests, re, time, json
rec_ids = Context['argv']['rec_id'] # 改為復(fù)數(shù),獲取所有記錄ID
src_texts = Context['argv']['src_text'] # 改為復(fù)數(shù),獲取所有文本
url = 'http://api.niutrans.com/NiuTransServer/translation'
apikey = "c4e10095a8c951a6443789345c498e9a" #不保證能用,可以自己申請免費的
def is_english_strict(text):
if not text:
return False
english_chars = re.findall(r'[a-zA-Z]', text)
if ' ' in english_chars:
return False
else:
return len(english_chars) / len(text) > 0.7
def niu_trans(sentence, src_lan="auto", tgt_lan="zh"):
data = {"from": src_lan, "to": tgt_lan, "apikey": apikey, "src_text": sentence}
res = requests.post(url, data=data)
res_dict = json.loads(res.text)
if "tgt_text" in res_dict:
result = res_dict['tgt_text']
else:
result = res.text
return result
def translate(word):
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36"}
url = r"https://dict.cn/search?q=" + word
try:
resp = requests.get(url, headers=headers, timeout=30).text
phonetic = re.search('<bdo lang="EN-US">(.*?)</bdo>', resp)
pattern = re.compile(r'<ul class="dict-basic-ul">(.*?)</ul>', re.DOTALL)
matches = pattern.findall(resp)
mean = []
if matches:
content = matches[0]
meanings = re.findall(r'<li>.*?<span>(.*?)</span>.*?<strong>(.*?)</strong>.*?</li>', content, re.DOTALL)
for part_of_speech, meaning in meanings:
mean.append(f"{part_of_speech}{meaning}")
word_info = {
"單詞": word,
"音標(biāo)": phonetic.group(1) if phonetic else "",
"詞義": "".join(mean) if mean else ""
}
return word_info
except Exception as e:
return f"翻譯失敗: {str(e)}"
# 循環(huán)處理每一個記錄
for i in range(len(rec_ids)):
rec_id = rec_ids[i]
src_text = src_texts[i]
try:
df = dbt(sheet_name='數(shù)據(jù)表')
if is_english_strict(src_text):
info = translate(src_text)
# 構(gòu)建數(shù)據(jù)記錄 - 使用字段名作為鍵
record_data = {
"_rid": rec_id,
"音標(biāo)": info["音標(biāo)"] if isinstance(info, dict) else "",
"詞義": info["詞義"] if isinstance(info, dict) else info
}
else:
# 構(gòu)建數(shù)據(jù)記錄 - 使用字段名作為鍵
record_data = {
"_rid": rec_id,
"詞義": niu_trans(src_text)
}
# 更新當(dāng)前記錄
update_dbt(data=record_data, sheet_name='數(shù)據(jù)表')
time.sleep(0.6) # 每個記錄處理完后等待0.6秒
except Exception as e:
print(f"處理記錄 {rec_id} 失敗: {str(e)}")
print(f"? 批量處理完成,共處理了 {len(rec_ids)} 條記錄")并修改其中apikey為你自己申請的小牛機器翻譯API,如下圖所示:

3. 配置自動化流程
點擊自動化流程,新建一個自動化的流程:

首先設(shè)置一個觸發(fā)條件,也就是新增或修改記錄是觸發(fā)。

其次,在第二步中設(shè)置執(zhí)行PY代碼,在【選擇將要執(zhí)行的腳本文件】處設(shè)置要執(zhí)行的PY代碼,這個代碼就是之前在腳本里設(shè)置好的代碼。

接著要設(shè)置一下腳本入?yún)?,有兩個參數(shù),一個是rec_id,是記錄的ID,另一個傳入PY代碼的是是單詞列的文本。
三、使用方法
1. 輸入查單詞
進入數(shù)據(jù)表,在單詞列輸入單詞:

也可以新建一個表單視圖,共享給別人后,可以多人一起輸入生詞,一起協(xié)作。

2.導(dǎo)入查單詞
在數(shù)據(jù)表中,導(dǎo)入WPS表格,至少有一列,列名為單詞。再點擊數(shù)據(jù)表旁邊的三個點,選擇【追加導(dǎo)入數(shù)據(jù)】,導(dǎo)入后,系統(tǒng)會自動查詢單詞

3. 導(dǎo)出查詢結(jié)果
點擊表格視圖中右側(cè)三個點,再點導(dǎo)出數(shù)據(jù),就可以把查詢的結(jié)果導(dǎo)出到本地Excel表中。

四、小結(jié)
在這個項目中,我們采用WPS多維表+Python爬蟲,通過調(diào)用小牛機器翻譯API或爬取網(wǎng)頁內(nèi)容的方法,并回填到多維表頁面上,實現(xiàn)了一個在線批量查字典的功能,不僅可以查單詞,還可以查詢短語。如果是短語就直接調(diào)用小牛機器翻譯進行翻譯,如果是非英文的語言,直接用小牛機器翻譯自動識別,然后翻譯成中文。
這個小項目可以用于課堂學(xué)生互動,讓學(xué)生錄入感覺較難的生詞,WPS多維表自動計算它的頻次,根據(jù)頻次來講解學(xué)生認(rèn)為重要且較難的單詞。同時也可以作為個人記錄生詞的小工具,在后面添加日期后,字段設(shè)置不能重復(fù)錄入,用戶可以手機或電腦記錄每天遇到的生詞,而且數(shù)據(jù)本地和遠(yuǎn)程共享,非常方便。
到此這篇關(guān)于Python結(jié)合WPS多維表實現(xiàn)在線批量查詞功能的文章就介紹到這了,更多相關(guān)Python查詞內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python中的多線程鎖lock=threading.Lock()使用方式
這篇文章主要介紹了python中的多線程鎖lock=threading.Lock()使用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-06-06
Python&Matlab實現(xiàn)螞蟻群算法求解最短路徑問題的示例
本文主要介紹了Python&Matlab實現(xiàn)螞蟻群算法求解最短路徑問題的示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03
pyqt5讓圖片自適應(yīng)QLabel大小上以及移除已顯示的圖片方法
今天小編就為大家分享一篇pyqt5讓圖片自適應(yīng)QLabel大小上以及移除已顯示的圖片方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-06-06
如何利用python創(chuàng)建、讀取和修改CSV數(shù)據(jù)文件
csv文件與txt文件類似,區(qū)別點就是在csv文件中,字段間使用“,”或“|”隔開,達(dá)到類似與表格的效果,下面這篇文章主要給大家介紹了關(guān)于如何利用python創(chuàng)建、讀取和修改CSV數(shù)據(jù)文件的相關(guān)資料,需要的朋友可以參考下2022-05-05
python標(biāo)準(zhǔn)日志模塊logging的使用方法
python的標(biāo)準(zhǔn)庫里的日志系統(tǒng)從Python2.3開始支持。只要import logging這個模塊即可使用。2013-11-11

