Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将.csv文件的每一列解析为单个列表_Python_Csv_Python 2.4 - Fatal编程技术网

Python 将.csv文件的每一列解析为单个列表

Python 将.csv文件的每一列解析为单个列表,python,csv,python-2.4,Python,Csv,Python 2.4,我有以下类型的csv a,b,c 1,2,3 4,5,6 7,8,9 我想把这个csv文件的每一列都解析成一个没有列的列表,这样最终的结果就是 myList = ["1","4","7","2","5","8","3","6","9"] 我已经为一列找到了许多解决方案,但我需要灵活地阅读文件的每一列。我使用的是较旧版本的python,因此无法在pandas库中使用任何解决方案。您可以完全阅读该文件,然后zip对行进行转置,然后将结果链接起来以展平列表。独立示例(使用字符串列表作为输入): 结

我有以下类型的csv

a,b,c
1,2,3
4,5,6
7,8,9
我想把这个csv文件的每一列都解析成一个没有列的列表,这样最终的结果就是

myList = ["1","4","7","2","5","8","3","6","9"]

我已经为一列找到了许多解决方案,但我需要灵活地阅读文件的每一列。我使用的是较旧版本的python,因此无法在pandas库中使用任何解决方案。

您可以完全阅读该文件,然后
zip
对行进行转置,然后将结果链接起来以展平列表。独立示例(使用字符串列表作为输入):

结果:

['1', '4', '7', '2', '5', '8', '3', '6', '9']
它将从一个文件中读取:

with open("test.csv") as f:
    cr = csv.reader(f,separator=",")  # comma is by default, but just in case...
    next(cr)  # skip title
    myList = list(itertools.chain.from_iterable(zip(*cr)))
简单方法:

d = """a,b,c
1,2,3
4,5,6
7,8,9
"""

cells = []
for line in d.split("\n"):
    if line:
        cells.append(line.strip().split(','))

print(cells)

for n in range(len(cells[0])):
    for r in cells:
        print(r[n]) 

相同的迭代,但与生成器相同:

def mix(t):
    for n in range(len(t[0])):
        for r in t:
            yield r[n]

print( list( mix(cells) )  )

使用
csv
chain
展平列表

import csv
from itertools import chain

l = list(csv.reader(open('text.csv', 'r')))
mylist = map(list, zip(*l[1:])) # transpose list
list(chain.from_iterable(mylist)) # output ['1', '4', '7', '2', '5', '8', '3', '6', '9']

没有直接的方法可以做到这一点,您必须循环遍历每一行,并在single
array
splitlines()中添加它,这只是为了创建一个独立的示例。文件不需要拆分行。检查我的第二个示例,其中输入是一个文件。不要使用
DictReader
,因为值的顺序取决于键的顺序,而键的顺序不是您想要的。谢谢,我尝试了代码,但我得到了['1;2;3','4;5;6','7;8;9'],nvm。。。excel在骗我。。。它加了一个“;”而不是“,”这是因为您的文件与您发布的文件不匹配。尝试添加分隔符(请参见我的编辑)
import csv
from itertools import chain

l = list(csv.reader(open('text.csv', 'r')))
mylist = map(list, zip(*l[1:])) # transpose list
list(chain.from_iterable(mylist)) # output ['1', '4', '7', '2', '5', '8', '3', '6', '9']