2017-04-20 13 views
1

我一次讀取一行.csv文件中的兩列值,這會產生一個由兩個字符串組成的行條目列表(類似['cat1' 「DOG1」])Python list .extend方法將字符串分解爲字符

當我遍歷我提取我試圖把在一個列表中所有的「貓」和「狗」在另一個,有點像這樣的所有行:

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

我期望doglist是:

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

而是我得到

[ 'd', '0', 'G', '1', '', 'C', 'A', '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()'在序列中添加每個項目。一個字符串是一系列字符。如果你想添加它作爲一個項目,使用'.append()'。 – zondo

+0

是的 - 我以爲我檢查過.append與.extend,但顯然不是。此外,發現我的兩個列表A = B = []的初始化是導致我混合條目的原因。所有都是固定的。感謝大家。 –

回答

1

list.extend擴展了您所傳遞的迭代中每個項目的列表。一個字符串是一個可迭代的字符,所以它附加了字符。

更容易在這裏使用list.append