2017-12-11 14 views
0

私はPythonの新機能で、ユーザ定義の変数を検索する単純なプロジェクトに取り組んでいます。見つかった場合は、その列にそれが見つかった。Python - CSV列の値を検索して文字列を返す

私は自分のコードに私を導いてくれる多くの記事を読んだことがありますが、実行したときにエラーが出ない間もコードは次の部分に続きます。この場合、以下の部分は省略しましたが、それ自身で実行すると、入力変数の後にブレークします。コードの

import csv #CSV File Handling 

#Define variables for customer file reading and appending 
custData = open('custData.csv', 'a+') 
custFields = ['ContactLast','ContactFirst','Company','Credit','Phone','Address','City','State','Zip'] 
reader = csv.DictReader(custData, delimiter=',') 
writer = csv.DictWriter(custData, fieldnames=custFields) 
search = '' 

#Open the file 
with custData: 

#Display the Welcome Message and Main Menu 
    mainmenugo = 'Y' 
    while (mainmenugo.upper() == 'Y'): 

     print ('-------------------- What would you like to do? ------------------\n' 
     '--- (1) Lookup Account  (2) New Account  (quit) Shutdown ---\n' 
     '------------------------------------------------------------------') 
     mainmenugo = 'n' #Stop the loop from itirating forever on start 
     mainmenuselect = input('Type your selection and press return : ') 

     if mainmenuselect == '1': ## Account Options Mode 
      search = input('Enter the contact last name to search : ') 
      for row in reader: 
       if search == row['ContactLast']: 
        print (row['Company'], 'has a balance of $', row['Credit'], '. What would you like to do?') 

一部は、明確にするために省略されましたが、私はそれを設定している理由は、それがあるように私はそれについて行くのシンプルな方法があると確信していますけれども、それは、あります。私はいくつかの異なることを試しましたが、実際にどこで始めるべきかわからないのですが、これではエラーはほとんど発生しませんが、出力はありません。ありがとう!

答えて

0

次の問題が発生していると思います。 input()がPython 3の場合はユーザー入力を評価してユーザー入力1を整数1に効果的に変換します。これを文字列'1'と比較しようとしています。あなたのケースでは

In [1]: search = input('Enter the contact last name to search : ') 
Enter the contact last name to search : 1 

In [2]: type(search) 
Out[2]: int 

In [3]: search == '1' 
Out[3]: False 

を、ユーザーのタイプは1if mainmenuselect == '1':比較はfalsyであるかどう:

つまり、ここで何が起こっているかです。

関連する問題