2017-04-12 3 views
0

自分自身でPythonとSqliteを教えようとしていて、私の頭が回転しています。どのようにして、結果からすべての角括弧、コンマなどを取り除くためにクエリの出力を「クリーンアップ」しますか?第2列の.title()も好きですか?たとえば、次の出力でPythonでのsqliteクエリのクリーンアップ

def get_all_bdays(self): 
    print("\n" * 100) 
    print("The birthdays we know about are: ") 
    self.c.execute('SELECT * FROM birthdays') 
    for row in self.c.fetchall(): 
     print(row) 

結果:1のようなものにその混乱を再フォーマットについては行くんどのよう

The birthdays we know about are: 
(1, 'joe smoe', '12-12-1212') 

The birthdays we know about are: 
1. Joe Smoe 12-12-1212 

私の最終目標は、インベントリを作成することです私の従業員が私の倉庫にバックストック品目がどこにあるのかを見つけるために使用することができる私の中小企業向けのシステムです。そのようなもののためにFlaskを使うことを考えていますが、私はその時点からずっと離れています。

答えて

3

各行は3つの値を持つタプルです。 print(row)はタプルをすべてのカッコと引用符で出力しますが、フォーマットされたバージョンは出力されません。

Pythonでは、あなたはタプルを分解することができますし、別の変数にその一部を割り当て、printf様の書式設定のためのPythonの構文を使用して、その後フォーマット:

for row in self.c.fetchall(): 
    number, name, date = row 
    print("%d. %s on %s" % (number, name.title(), date)) 

かさえ:

for number, name, date in self.c.fetchall: 
    print("%d. %s on %s" % (number, name.title(), date)) 
+0

Zbwこれは美しく働いた。ありがとう! – Biggen

1

print(row)の場合、引用符とコンマなどを含むrowのPython表現が得られます。何がやりたいことは、あなたが好きな形にデータをstr.formatすることです:番号、名前、誕生日:

fmt = "{0}. {1}, on {2}" 
for row in self.c.fetchall(): 
    print(fmt.format(*row))