2011-12-09 9 views
0

出力を小文字で出力したいのですが、正しい結果が得られません。ここに私のコードです。助けてください!このコードに下位の機能を追加するには

import csv 
mags = csv.reader(open("mags.csv","rU")) 

for row in mags: 


    print [row[index] for index in (1, 0)] 

    print [item.lower() for item in row] 
+2

どのような結果が得られていますか、どのように違いがありますか? – kindall

+0

問題は、CSVの各行に2つの出力が得られることです。 1番目のprintステートメントは、目的のシーケンスのデータを返し、2番目のprintステートメントは同じデータを小文字で返します。私が望むのは、これら2つの出力をマージすることですが、どのようにコード化するのか分かりません。 – mantissa45

+0

あなたはそれらをすべて同じ行に入れたいですか? –

答えて

1

ネストすることができ、このように二つの内包表記:

print [item.lower() for item in [row[index] for index in (1, 0)]] 

あなたが最初の理解からのデータ(行の第2および第1のアイテムを使用しますその方法この順番で2番目の入力(小文字のすべて)の入力として使用します。

あなたはまた、代わりに、最初の1のための理解を使用しての行をスライスすることができます

print [item.lower() for item in row[::-1][-2:]] # Slicing in 2 steps: [::-1] reverses the list and [-2:] returns the last two items of the reversed list 

または(短い、しかし、あなたが思うだろうと動作しません。指数スライスを逆転する)

print [item.lower() for item in row[1::-1] # Same thing, but it helps to break these things up into steps 
+0

ありがとう!ネスティングは、私が探していたものを正確に私に与えました。 – mantissa45

1

ここに文字列のリストがありますか? 私は正しい出力を参照してください。

>>> row = [ "alpA", "bETA","gammA" ] 
>>> print [item.lower() for item in row] 
['alpa', 'beta', 'gamma'] 
>>> 
2

リストの内包表記はこれをテストするために便利な通訳をお持ちでないので

print [item.lower() for item in [row[index] for index in (1, 0)]] 

のように、入れ子にすることができます、tho。

+0

ありがとうございました...まさに私が必要としたものです。 – mantissa45

関連する問題