Speichern einer Textdatei in SQLite3-Datenbank mit python

Ich habe einige Operationen mit einer Datei mit Python gemacht. Jetzt musst du nur einen tisch mit zwei säulen erstellen … man ist für msgid und ein anderer ist für msgstr … alle msgid s sollte in msgid Spalte gespeichert werden und alle msgstr s sollte in msgstr Spalte gespeichert werden ..

Ich bin sehr neu in der Programmierwelt. Bitte helfen Sie mir. Ich habe geklebt, was ich unten getan habe:

 fn='ru.po' f=open(fn) output=[] for line in f: if not '#' in line: output.append(line) f.close() f=open(fn,'w') f.writelines(output) f.close 

One Solution collect form web for “Speichern einer Textdatei in SQLite3-Datenbank mit python”

Es gibt 2 Teile dazu:

  1. Extrahieren des msgid und der entsprechenden msgstr Werte aus der .po-Datei.
  2. msgid msgstr msgid und msgstr in eine Tabelle in der SQLite-Datenbank ein.

Für Teil 1 schlage ich vor, das babel Modul zu verwenden. Sie können es mit installieren

 pip install babel 

Verwenden Sie die Funktion babel.messages.pofile.read_po() , um die .po Datei zu lesen. Dies wird einen Katalog zurückgeben, auf dem Sie über alle aus der Datei analysierten Nachrichten iterieren können:

 from babel.messages.pofile import read_po with open('ru.po') as po_file: cat = read_po(po_file) for message in cat: if message.id: print '{!r} -> {!r}'.format(message.id, message.string) 

Für Teil 2:

 import sqlite3 conn = sqlite3.connect('catalog.db') cursor = conn.cursor() result = cursor.execute('CREATE TABLE ru (msgid TEXT, msgstr TEXT)') # bulk insert the messages messages = [(msg.id, msg.string) for msg in cat if msg.id] result = cursor.executemany('INSERT INTO ru (msgid, msgstr) VALUES (?, ?)', messages) assert(result.rowcount == len(messages)) conn.commit() result = cursor.execute("SELECT * from ru where msgid = '11 inches/sec.'") msgid, msgstr = result.fetchone() # .encode('utf8') can be removed for Python 3 print '"{}" translates to "{}"'.format(msgid, msgstr.encode('utf8')) msgid = 'A Samba password is required to export printer drivers' result = cursor.execute("SELECT * from ru where msgid = ?", (msgid,)) msgid, msgstr = result.fetchone() print '"{}" translates to "{}"'.format(msgid, msgstr.encode('utf8')) 

Ausgabe

 "11 Zoll / Sek."  Übersetzt auf "11 дюймов / с"
 "Ein Samba-Passwort ist erforderlich, um Druckertreiber zu exportieren" übersetzt in "Для экспорта драйверов принтера требуется пароль Samba"

Du musst vielleicht feststellen, dass es viele msgid s mit leeren msgstr s gibt. Wenn du sie nicht willst, dann modifizieren

 messages = [(msg.id, msg.string) for msg in cat if msg.id] 

nach

 messages = [(msg.id, msg.string) for msg in cat if msg.id and msg.string] 
  • Ganzes JSON in ein SQLite-Feld mit Python
  • Textdatei in sqlite3 Datenbank mit Python
  • Profil Millionen von Textdateien im Parallel mit einem Sqlite Counter?
  • Einfachste Weg, um SQLite-Abfrage zu wiederholen, wenn DB gesperrt ist?
  • Tweepy Stream zu sqlite Datenbank - ungültige Synathe
  • Wie lade die vorhandene db-Datei in den Speicher in Python sqlite3?
  • Parameter nicht unterstützt beim Einfügen von int in sqlite
  • Sqlite3 / python - Export von sqlite zu csv Textdatei überschreitet nicht 20k
  • Python ist die beste Programmiersprache der Welt.