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

本问题已经有最佳答案,请猛点这里访问。

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

当我遍历我提取的所有行时,我试着把所有的"猫"放在一个列表中,把"狗"放在另一个列表中,就像这样:

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

我希望doglist是:

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

但是我得到

[' d ', ' o ', ' g ', ' 1 ', ' ', ' c ', ' ', ' t ', ' 1 ', ' ',…)等

我怀疑,当我发现为什么字符是列表元素而不是字符串时,我还会发现为什么猫和狗在同一个列表中,即使行元素0是狗,行元素1是猫。

我的实际代码,与愚蠢的调试语句如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 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)

这是我的第一个问题,所以修改我的表格不要觉得不好意思。


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

这里更容易使用list.append