0

というテキストファイルがCustomerList.txtあり、次のようになります

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

最終結果は次のようになります

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

それは私がこれまでに持っているものですが、アップパックするには3つ以上の値が必要だというエラーが表示されます. 昨日タプルを使い始めたばかりなので、この初心者のためにできるだけ基本的なことを守ってください。なぜそれが機能したかについての説明を含めることができれば、それは素晴らしいことです!

ステップ 1: データ ファイルの各行は、タプルのリスト (またはリスト内のリスト) 内のタプルになる必要があります。これは、前回のプログラムで作成したものの前にある必要があります。

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

4

1 に答える 1

0

うまくいけば、以下で始めることができます:

まず、デフォルトsplit()では、空白(つまり空のスペース)で分割され、カンマで分割する必要があるため、次のように変更します.split(',')...

また、実行rstrip()して new_line 文字 ( \n) を削除しました。

さらに、データ全体ではなく、ヘッダーを各行に圧縮する必要があります。現在の 'for ループ' は、行 (それぞれに個別のデータ エントリが含まれる) をループするため、zip はその内側 (個々の行ごとに圧縮) であり、外側 (つまり、データ全体を圧縮しない) である必要があります。また、個人的には、長いリスト変数を割り当てるよりも、配列を圧縮する方が簡単だと思います (それが実際に機能するかどうかはわかりません)。

これは、最初のステップから始める方法です。

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()]
于 2016-12-09T01:29:10.843 に答える