Python列表.extend方法将字符串分解为字符

时间:2017-04-20 23:12:46

标签: python

我正在读取.csv文件中的两列值一次一行,这会产生一个由两个字符串组成的行条目列表(类似['cat1','dog1'])

当我遍历我提取的所有行时,我尝试将所有“猫”放在一个列表中,将“狗”放在另一个列表中,有点像这样:

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

我希望列表是:

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

但我得到了

['d','o','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 个答案:

答案 0 :(得分:1)

list.extend使用您传递的iterable中的每个项扩展列表。字符串是可迭代的字符,因此它会附加字符。

此处更易于使用list.append