2017-01-04 6 views
1

のフォーマット: - 患者の詳細が追加または更新された場合は、一般的な病状のリストがあり、当社のアプリケーション内で可変長リストの内容

conditionsList = ['Alzheimers', 'Asmatic', 'Arthtitis', \ 
    '', '', '' \ 
    'Cardiovascular', 'Other Musculoskelatal', 'Peripheral Artery Disease'] 

これらの条件はにリンクすることができる第2のスクリーンがあります患者。これらは、単純なY/N値としてMySQLデータベースに格納されます。これらは、その後、読み込まれる: -

conditionsVal = [row[i] for row in rows for i in xrange(1, 42)] 

とサブリストは、私が持っている問題はすべての人が、既存の条件を持っていない可能性があるため、賢明なプリントアウトには、この新しいリストをフォーマットする方法です

listVal = [historyList[i] for i in xrange(len(historyList)) if historyVal[i] == 'Y'] 

を作成しました他のものには十数個以上のものがあるかもしれません。

使用される初期フォーマットはHTMLです。その後、必要に応じて印刷/電子メールのために、ユーティリティwkhtmltopdfを介してPDFに変換されます。行の折り返し、部分行などを避けることです。

+1

トピックはありませんが、 'listVal = [vはv、hはz =(historyList、historyVal)h == 'Y']'のように見えます。 –

+0

「印刷出力」には不特定多数が残されています。それをHTML文書としてフォーマットしますか? PDF?コンソール上のプレーンテキスト?インタラクティブなオンスクリーンコントロールを備えたGUIの一部ですか?それは常に固定幅フォントですか? – jez

+0

@jez HTMLの要件が質問に追加されました。 – OldSteve

答えて

2

正解またはこれに間違った答え。どのようにしてリストをフォーマットし、カスタム書式機能を書いていくかを決めることができます。

def formatStringList(ls): 
    if len(ls) == 0: 
     return 'None' 
    elif len(ls) == 1: 
     return ls[0] 
    else: 
     return ', '.join(ls[:-1]) + ', and ' + ls[-1] 

やや軽薄なテスト:ような何か

lists = [[],['Cancer'],['Diabetes','Plague','AIDS','Ingrown Toenails']] 

for i,ls in enumerate(lists,start = 1): 
    print("Patient " + str(i) + " conditions: " + formatStringList(ls)) 

出力:

Patient 1 conditions: None 
Patient 2 conditions: Cancer 
Patient 3 conditions: Diabetes, Plague, AIDS, and Ingrown Toenails 

リスト内の任意の空の文字列がある場合は、最初にそれらを除外することができます。

必要に応じて、より洗練された最大線長を決定し、明示的な改行('\n')を導入することができます。何かを試してください。あなたがそれに満足していない場合は、それを微調整してください。

関連する問題