0

csvファイルには次の内容が含まれています。

Cautus Drogisterijen B.V.
Cautus Drogisterijen B.V.
Clever Franke
De Inrichting
Teva Pharmaceuticals Europe B.V.

名前はcsvからインポートされ、変換されます。

私は次のスクリプトを持っています:

#Gegevens
l = (gegevens)
#script
#Welke sleutels moet hij pakken
sortkey = operator.itemgetter(1,5)
#De identieke sleutel selecteren
l_clean = sorted(l,key=sortkey)
#delijst maken
l_final = [(k, list(v)) for k,v in groupby(l_clean, key = operator.itemgetter(1))]
#importeer csv optie
import csv
#bestand kiezen
with open('export.csv', 'wb') as f:
    #Write 
    writer = csv.writer(f)
    #loop over de lijst
    for k,v in l_final:
    #welke gegevens hij moet tonen
       info_rest = v[0][:5]+v[0][5:]
       #combineerd de verzekeringen
       info_combine = map(operator.itemgetter(5),v)
       uniekid = k
       verzl = info_combine
       name = info_rest[0]
       risicoadr = info_rest[2]
       polisnummer = info_rest[3]
       relatienummer = info_rest[4]
       aanhef = info_rest[6]
       contactpersoon = info_rest[7]
       emailadr = info_rest[8]
       klantgegevens = []      
       #lijst met alle gegevens
       klantgegevens1 = [uniekid,naam,verz,risicoadr,polisnummer,relatienummer,aanhef,contactpersoon,emailadr]       
       klantgegevens.append (klantgegevens1)     
       for i, w in enumerate(name):
           print (i,w)

       #welke gegevens hij erin moet schrijven
       writer.writerow(klantgegevens)

これにより、次の出力が生成されます。

(0, 'C')
(1, 'a')
(2, 'u')
(3, 't')
(4, 'u')
(5, 's')
(6, ' ')
(7, 'D')
(8, 'r')
(9, 'o')
(10, 'g')
(11, 'i')
(12, 's')
(13, 't')
(14, 'e')
(15, 'r')
(16, 'i')
(17, 'j')
(18, 'e')
(19, 'n')
(20, ' ')
(21, 'B')
(22, '.')
(23, 'V')
(24, '.')
(0, 'C')
(1, 'a')
(2, 'u')
(3, 't')
(4, 'u')
(5, 's')
(6, ' ')
(7, 'D')
(8, 'r')
(9, 'o')
(10, 'g')
...

ご覧のとおり、彼は名前のすべての文字をループして文字に番号を付けていますが、私が欲しいのは、私の出力が次のようになることです。

(0, 'cautus drogisterij B.V.')
(1, 'cautus drogisterij B.V.')

すべての名前に番号が付けられます。

4

2 に答える 2

3

がの場合、そのループを囲む別のループがなければ、コードは正常に機能するはずですnamelist of names

これは動作します:-

>>> name = ['rohit', 'jain']
>>> for i,x in enumerate(name):
    print (i, x)


(0, 'rohit')
(1, 'jain')

ただし、これが得られるものであり、リストを反復処理する外部ループがある可能性があります。-

>>> name = ['rohit', 'jain']
>>> for name in name:
        for i, x in enumerate(name):
            print (i, x)


(0, 'r')
(1, 'o')
(2, 'h')
(3, 'i')
(4, 't')
(0, 'j')
(1, 'a')
(2, 'i')
(3, 'n')

更新:-

あなたinfo_restは実際には1-Dリストです:-

for k,v in l_final:
    info_rest = v[0][:5]+v[0][5:]

上記のコードは、2次元リストから1次元リストを提供しますv:-

>>> v = [['rohit', 'jain'], ['a', 'ab']]
>>> info_rest = v[0][:5]+v[0][5:]
>>> info_rest
['rohit', 'jain']

だから、あなたが言うとき:-

name = info_rest[0];  # name contains 'rohit;

名前には、リストではなく文字列が含まれます。-'rohit'この場合

だから、あなたの名前を繰り返すのではなく:-

for i, w in enumerate(name):
           print (i,w)

印刷するだけです:-

print (k, name)  # k is the index from outer loop
于 2012-10-24T11:50:30.550 に答える
0

名前のリストを反復処理する外部ループがあります。したがって、この現在のループは文字列を繰り返し処理しますname。残念ながら、提供されたコードは短すぎて、それ以上のものを垣間見ることはできません。

編集:あなたのコメントに来て、明らかに「loopoverdelijst」と言っています。forこのループ全体を削除して、print(k, name)

于 2012-10-24T12:02:08.790 に答える