2016-12-09 8 views
0

は、私は、テキストファイルには、CustomerList.txtと呼ばれている、それは私がこれまで持っているものだが、私は私が3以上のものを必要とするというエラーを取得し、このどのようにデータファイルの各行をタプルのリストのタプルにすることができますか?

134998,Madison,Foxwell,825 John Street,Staunton,VA,24401,6655414998

The end result should be like this

with open("CustomerList.txt", "r") as fin: 
    ID, Firstname, Lastname, Address, City, State, Zip, Phone = zip(*[l.split() for l in fin.readlines()]) 

のように見えます値をアップアップする。私は昨日タプルを使い始めましたので、この初心者のためにできるだけ基本的なことをしてください。なぜそれがうまくいくのかについての説明を含めることができればそれは素晴らしいことでしょう!

ステップ1:データファイルの各行は、タプルのリスト(またはリスト内のリスト)のタプルになります。 It would need to be before what I created in the last program which is this.

ステップ2: 一致が見つかった場合は、空を返さない場合、私はそれがタプル/リストとしてのリターンマッチを検索するために(134998など)のID番号を取得する必要があります返す関数の内部タプル/リスト。それらは計算ではないため文字列にすることができます。

まず、デフォルトsplit()で、空白で分割し(すなわち空きスペース)、あなたはそれがコンマで分割したい - そうにそれを変更します:

+1

スペース文字を使用して 'スプリット()'分割 '」「'(デフォルト):

これは私が最初のステップで始めるだろう方法です。私はちょうどコンマで分割したいと思います。 '、' 'だから、代わりに' l.split( '、') 'を使ってみてください... – Julien

答えて

0

うまくいけば、以下の作業を開始します.split(',') ...

また、new_line文字(\n)を削除するためにrstrip()を実行しました。

さらに、ヘッダーを全体のデータではなく各行に圧縮する必要があります。あなたの現在の 'forループ'は、それぞれ別々のデータエントリを含んでいるライン上をループします。したがって、ジップはその内部にある必要があります(個々のラインをジップする)。また、私は個人的に長いリスト変数を割り当てるのではなく、配列を圧縮するほうが簡単です(実際にはうまくいくかどうかはわかりません)。

with open("positionfile.txt", "r") as fin: 
    header = ['ID', 'Firstname', 'Lastname', 'Address', 'City', 'State', 'Zip', 'Phone'] 
    print [zip(header,l.rstrip().split(',')) for l in fin.readlines()] 
関連する問題