2017-09-19 19 views
0

私はある種の魂が答えに役立つことを望んでいたことをここに質問しています!.csvファイルから新しいリストを生成するユーザー入力?

ヘッダーに3つの項目があり、多くは割り当てられた.csvファイルがあります。印刷したときの.csvは、次のようになります。

['NUTS CODE', 'NUTS NAME', 'Change 2008-2014'] 
['AT11', 'Burgenland (AT)', '0.6'] 
['AT12', 'Niederosterreich', '1.4'] 
['AT13', 'Wien', '2.9'] 
['AT21', 'Karnten', '2.4'] 
['AT22', 'Steiermark', '1.1'] 
['AT31', 'Oberosterreich', '1.3'] 
['AT32', 'Salzburg', '0.7'] 
['AT33', 'Tirol', '0.6'] 
['AT34', 'Vorarlberg', '-0.7'] 
['BE10', 'Region de Bruxelles-Capitale/Brussels Hoofdstedelijk Gewest', '2.4'] 
['BE21', 'Prov. Antwerpen', '1.5'] 
['BE22', 'Prov. Limburg (BE)', '1.2'] 
['BE23', 'Prov. Oost-Vlaanderen', '0.7'] 
['BE24', 'Prov. Vlaams-Brabant', '0.8'] 
['BE25', 'Prov. West-Vlaanderen', '1.5'] 

私は、入力が第1の値に関連するユーザー入力を受け取り、プログラムを作成したい、私は入力言う:「AT」、およびプログラムは、すべて返しますそのコードに対応する名前と値。例:私は、入力コードは、以下のリストを作成し、「BE」場合: [["BE10", "Region de Bruxelles-Capitale/Brussels Hoofdstedelijk Gewest", 2.4], [BE21', 'Prov. Antwerpen', '1.5']]など

これは私が開くのに使用するものである:

import csv 

with open ('Change_in_Unemployment_2008-2014.csv') as csvfile: 
    readCSV = csv.reader(csvfile, delimiter=',') 
    #next(readCSV)  #Uncomment to remove header 

for row in readCSV: 
    print(row) 

csvfile.close() 

答えて

0
result = [] 
user_input = input() 
for row in readCSV: 
    if row[0].startswith(user_input): 
     result.append(row) 
print (result) 
+0

をユーザーが[0]の行ではありませんでした文字列を入力して、私は(一度だけ)メッセージを印刷したい場合にはどのようなものデータが存在しないと述べていますか? 私はelse:ステートメントを試しましたが、リストを通じた繰り返しごとに同じメッセージ、つまり多くのメッセージが表示されます。 –

0

上記の答えはちょうど必要があり、ほとんどの権利であります2つの修正。ヘッダ行はカラムラベルをスキップする必要があります。入力がPythonコードとして解釈されるため、raw_inputを使用してユーザ入力を取得する方が良いでしょう。

その後
strInput = input("Please enter a full/partial NUTS code to filter by:") 

次のようにループのためにあなたを変更します。

header = True 
for row in readCSV: 
    if header = True: 
     print row 
     header = False 
     continue 
    if row[0].startswith(strInput): 
     print (row) 
+0

質問には 'python-3-x'というタグが付けられていますので、' raw_input'と 'print'文は正しくありません。 –

+0

行[0]にない文字列をユーザーが入力したときに、データが存在しないことを示すメッセージ(1回のみ)を印刷する場合はどうなりますか?私はelse:文を試しましたが、それはリストを通して各繰り返しのための同じメッセージ、すなわち多くの多くのメッセージを私に与えます。 –

+0

ありがとうマーク - ちょうどそれを反映する答えを改訂! – shrumm

関連する問題