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 

  • Sperren von sqlite-Datei auf NFS-Dateisystem möglich?
  • DatabaseError: table OmniCloud_App_user hat keine Spalte mit dem Namen username
  • Python CSV zu SQLite
  • Sqlite - Verwenden Sie Backticks (`) oder doppelte Anführungszeichen (") mit Python
  • Sqlite3 Aktualisierungszeile, definiert durch eine Variable
  • Wie man aus sqlite3 cursor.fetchall () in python entfernen kann
  • Wie kann ich eine In-Memory-SQLite-Datenbank in Python anhängen?
  • Holen Sie sich eine Liste von Feldwerten aus Python's sqlite3, nicht Tupel, die Zeilen darstellen
  • 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] 
    Python ist die beste Programmiersprache der Welt.