2017-04-20 12 views
1

私は2つの文字列(['cat1'のようなもの)からなる行エントリのリストを生成する.csvファイルから2列の値を読み込みます「DOG1」])Pythonリスト.extendメソッドは、文字列に文字列を分割します

私は私が一種の、このように、他のすべての1つのリストで「猫」と「犬」を配置しようと抽出された全ての行を反復処理:

for row in csv_file_entries: 
    catlist.extend(row[0]) 
    doglist.extend(row[1]) 

ドッグリストは次のようになります:

['dog1'、 'dog2'、 'dog3'、 'dog4'、... dogN]

代わりに私が手

[ 'D'、 'O'、 'G'、 '1'、 ''、 'C​​'、 ''、 'T'、 '1'、 ''、 ...] ETC

なぜ文字が文字列ではなくリスト要素であるのか分かりましたが、行要素0が犬であっても、猫と犬が同じリストにある理由がわかります行要素1はネコです。

愚かなデバッグ文と私の実際のコードは、以下の通りです:

# get csv file containing digitized EOT data 
# first column is day of year, second is EOT minutes 
# taken from US Naval Obs site and digitized with web digitizer program 
fname = 'C:\\time_calculator\\EOT.csv' 
dtzd_DOY = dtzd_EOT = [] 
print("tarrtart", dtzd_DOY) 
with open(fname, 'rt') as csvfile: 
    eot_entries = csv.reader(csvfile, delimiter=',') 
# print(eot_entries) 
    print("pooooty", dtzd_DOY, dtzd_EOT) 
    for row in eot_entries: 
     print(row, row[0], row[1]) 
     thisDOY = row[0] 
     thisEOT = row[1] 
     print(thisDOY) 
     print(thisEOT) 
#  thisEOT = "heychittyfgfgfttrgrtfgrt" 
     dtzd_DOY.extend(thisDOY) 
     dtzd_EOT.extend(thisEOT) 
print(dtzd_DOY, dtzd_EOT) 

これが私の最初の質問ですので、私のフォームを修正について悪い感じはありません。

+1

'.extend()'は、各項目をシーケンスに追加します。文字列は一連の文字です。 1つの項目として追加する場合は、 '.append()'を使用します。 – zondo

+0

はい - 私は.appendと.extendをチェックしたと思ったが、明らかにそうではなかった。また、私の2つのリストA = B = []の私の初期化が、私のエントリーの混合を引き起こしていたことがわかった。すべてが修正されています。みんな、ありがとう。 –

答えて

1

list.extendは、渡されたイテレートの各項目でリストを拡張します。文字列は文字の反復可能なものなので、文字を追加します。

使いやすいlist.appendここにあります。