Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.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 - Fatal编程技术网

Python 从csv文件中读取每列

Python 从csv文件中读取每列,python,csv,Python,Csv,我想读取csv文件的每一列,并在将它们存储到表中之前进行一些修改 我有一个csv文件,如下所示: "1";"testOne";"ValueOne" "2";"testTwo";"ValueTwo" "3";"testThree";"ValueThree" 在这里,我想读取第一个值“1”,然后将它存储在一个变量中的某个位置,并用这个值做一些事情,与其他值类似。但是,目前我可以读取整个文件,但找不到访问行中各个列的方法 谢谢。您可以使用python模块: class csv.DictReader(

我想读取csv文件的每一列,并在将它们存储到表中之前进行一些修改

我有一个csv文件,如下所示:

"1";"testOne";"ValueOne"
"2";"testTwo";"ValueTwo"
"3";"testThree";"ValueThree"
在这里,我想读取第一个值“1”,然后将它存储在一个变量中的某个位置,并用这个值做一些事情,与其他值类似。但是,目前我可以读取整个文件,但找不到访问行中各个列的方法

谢谢。

您可以使用python模块:

class csv.DictReader(csvfile[, fieldnames=None[, restkey=None[, restval=None[, dialect='excel'[, *args, **kwds]]]]])
创建一个像普通读取器一样运行的对象 但将读取的信息映射到 dict的密钥由 可选的fieldnames参数。如果 如果省略fieldnames参数,则 csvfile第一行中的值 将用作字段名。如果 行读取的字段比 字段名序列,剩余的 数据被添加为由键控的序列 restkey的值。如果行为 具有的字段数少于字段名 顺序,其余的键取 可选restval的值 参数任何其他可选的或 关键字参数被传递给 底层阅读器实例

Python有一个内置模块


最上面的答案是灵活的和python式的,但是如果您希望一次从分隔数据中检索整个列(可以轻松地放入内存),那么您也可以尝试以下方法:

c_reader = csv.reader(open('test.csv', 'r'), delimiter=';')

# say you want the second column, only...
col_2 = list(zip(*c_reader))[1] # keeping in mind that python is 0-indexed

# or if you want to come back for more later on, you can just do...
columns = list(zip(*c_reader))
与前者相比,前者更具传统的python风格,但仍然具有功能性:

# just using a good old list comprehension
col_2 = [x[1] for x in c_reader]

# you could also get all the rows simply in this way
rows = [x for x in c_reader]
row_2 = rows[1]

现在去和伊特拉比人合一吧!;-)

这里,打印行[0],打印整行,但我只想打印行中的第一列。将该行的delimeter设置为work reader=csv。reader(f,delimiter=';')将delimiter设置为reader=csv。reader(open('test.csv','rb'),delimiter=';')默认为“”,您正在使用“;”@kgiannakakis:“for row in reader”中的“row”名称令人困惑,也许最好使用不同的名称(例如“element”,…)。是吗?@DaK,
是一行<代码>行[0]是元素。
# just using a good old list comprehension
col_2 = [x[1] for x in c_reader]

# you could also get all the rows simply in this way
rows = [x for x in c_reader]
row_2 = rows[1]