Das Weblio-Popup-Wörterbuch Englisch-Japanisch war praktisch, daher dachte ich, es wäre schön, wenn der Texteditor eine solche Funktion hätte.
Das Weblio-Popup-Wörterbuch Englisch-Japanisch zeigt die Suchergebnisse des Wörterbuchs wie ↓ an.
Im obigen Beispiel ist das zu suchende Wort invertiert, es gibt jedoch auch eine Einstellung, mit der Sie es einfach mit der Maus anzeigen können.
PopTranslateEnglish.py
# coding=UTF-8
import sublime, sublime_plugin
import urllib.request
import xml.etree.ElementTree as ET
class popTranslateEnglishIntoJapaneseCommand(sublime_plugin.TextCommand):
def run(self, edit):
search_word = self.view.substr(self.view.sel()[0])
if search_word == "":
print('none select word')
return
else:
print(search_word)
item_id = self.getItemID(search_word)
text = self.getTranslatedText(item_id)
if text == '':
return
text_arr = self.splitTranslatedText(text, '\t')
self.view.show_popup_menu(text_arr, None)
def getXmlElementText(self, url, tag):
print('url : ' + url)
try:
xml = urllib.request.urlopen(url)
except urllib.error.HTTPError as e:
print('error code : ' + str(e.code))
print('error read : ' + str(e.read()))
return ''
print(xml)
tree = ET.parse(xml)
root = tree.getroot()
element = root.find('.//{http://btonic.est.co.jp/NetDic/NetDicV09}' + tag)
text = element.text
print(text)
return text
def getItemID(self, search_word):
head = 'http://public.dejizo.jp/NetDicV09.asmx/SearchDicItemLite?Dic=EJdict&Word='
end = '&Scope=HEADWORD&Match=EXACT&Merge=OR&Prof=XHTML&PageSize=20&PageIndex=0'
url = head + search_word + end
return self.getXmlElementText(url, 'ItemID')
def getTranslatedText(self, item_id):
head = 'http://public.dejizo.jp/NetDicV09.asmx/GetDicItemLite?Dic=EJdict&Item='
end = '&Loc=&Prof=XHTML'
url = head + item_id + end
return self.getXmlElementText(url, 'Body/div/div')
def splitTranslatedText(self, translated_text, split_word):
return translated_text.split(split_word)
Suchen Sie zunächst nach einem Paket Erfahren Sie die grundlegende Methode zum Erstellen unter dem folgenden Link. [Seit ich sublime-text3 verwende, habe ich auch ein Plug-In erstellt](http://wood-roots.com/web%E5%88%B6%E4%BD%9C/%E3%83%84%E3% 83% BC% E3% 83% AB% E3% 82% A8% E3% 83% 87% E3% 82% A3% E3% 82% BF / erhabener Text3% E3% 82% 92% E4% BD% BF% E3% 81% 84% E3% 81% AF% E3% 81% 98% E3% 82% 81% E3% 81% 9F% E3% 81% AE% E3% 81% A7% E3% 83% 97% E3% 83% A9% E3% 82% B0% E3% 82% A4% E3% 83% B3% E3% 82% 82% E4% BD% 9C% E3% 81% A3% E3% 81% A6% E3% 81% BF% E3% 81% 9F) Ich habe übrigens das Gefühl, die Beschreibung von Python zu verstehen.
Wie übersetze ich ... Zuerst habe ich nach Weblios API gesucht, sie aber nicht gefunden. Ich habe festgestellt, dass ich es anscheinend unter dem folgenden Link übersetzen kann. Beispiel für einen Ruby-Code, der die Englisch-Japanisch / Japanisch-Englisch-Wörterbuch-API dejizo aufruft Wenn Sie die englischen Wörter und Parameter, die Sie in der URL suchen möchten, wie eine Funktion beschreiben, wird anscheinend das XML des Übersetzungsergebnisses zurückgegeben. Es fühlt sich an, als würde man das zurückgegebene XML analysieren und das Übersetzungsergebnis erhalten. Da es sich bei dem Beispiel jedoch um Ruby handelt, wie kann man es mit Python realisieren ...
urllib und xml.etree.ElementTree Es scheint, dass dies mit diesen beiden Bibliotheken realisiert werden kann. Sie können die Daten abrufen, wenn Sie mit urllib auf die URL zugreifen. Diesmal können Sie die XML-Datei abrufen. Der Ablauf des Parsens des von xml.etree.ElementTree erfassten XML. Sie können herausfinden, wie Sie jede Bibliothek von Google verwenden.
Zeitaufwändiger Teil
urllib.request.urlopen, das in der Methode getXmlElementText verwendet wird Es scheint urllib.request.urlopen oder urllib.urlopen zu sein, abhängig von der Version von Python. Darf sich das Wort des Imports ändern?
XML hat einen Namespace und die Tag-Suche schlägt fehl Wenn Sie das zu suchende Tag an die find-Methode übergeben, wird das untergeordnete Element zurückgegeben. Wenn es jedoch einen Namespace gibt, müssen Sie den Namespace anscheinend zum Tag hinzufügen.
element = root.find('.//{http://btonic.est.co.jp/NetDic/NetDicV09}' + tag)
Ich bekomme das Element hier, aber der in '{}' eingeschlossene Teil ist der Namespace. Weitere Informationen finden Sie unter Bearbeiten von XML mit Namespace in Python (Elementbaum). Übrigens, wenn Sie './/' hinzufügen, können Sie nicht nur untergeordnete Elemente, sondern auch Enkelelemente und darüber hinaus suchen.
Recommended Posts