2016-07-01 3 views
-1

私の現在のコードは以下のようなものです。リストの索引付けから例外を渡すためにtryとexceptを使用していますが、 "text"の長さは3未満です。私はもっ​​ときれいな方法を探しています。感謝の気持ちを教えてください。ここでよりきれいなコードを探しているPythonのインデックスの問題

for item in items: 
    text = item.splitlines() 
    try: 
    name = text[0] 
    except: 
    name = "" 

    try: 
    tag = text[1] 
    except: 
    tag = "" 

    try: 
    age = text[2] 
    except: 
    age = "" 
+0

if文の長さをチェックするステートメントif len(text)> 0:name = text [0] ' – ritlew

+4

「Prettier」は意見に基づいています。あなたはきれいなコードと思われるものをどのように知っていますか? –

+0

分割前の文字列に3つの改行文字があります。 splitlines()[:3] 'が動作するか、' name、tag、age =(item.splitlines()+ [') '、' '、' '])[:3] 'と入力します。 – jonrsharpe

答えて

3

は一つの方法である:

text = item.splitlines() 
name, tag, age = (text + [""] * 3)[:3] 
+0

ありがとう、それは私にはさらに美しく見えます。 – tfchen

0

itertoolsizip_longest()があります

keys = ['name', 'tag', 'age'] 
name, tag, age = (item[1] for item in izip_longest(keys, text, fillvalue="")) 

あなたがdictをしたい時に間違いなく、これは多くの便利便利です:

dict(izip_longest(keys, text, fillvalue="")) 
+1

また、 'item for izip_longest(...)'を実行することもできます。 – jonrsharpe

+1

@jonrsharpeどちらが醜いのかは本当に決めることはできません。 – dhke

関連する問題