如何读取csv文件行并将元素拆分成列表列表?

时间:2017-07-15 17:04:40

标签: python python-3.x csv

我有csv文件。当我用VisualStudio打开它时,我有类似的东西:

nr1  nr2  nr3  name  place
10  01  02  Jack  New York
10  01  03  David  London
10  02  01  Jasmine  New Jersey

每行中的元素之间有两个空格,地点名称中有一个空格。

当我用Excel打开csv文件时,每隔一列只有元素。

我不知道怎样才能读取这个csv文件,使每一行都成为这样的元素列表:

my_list = [

['10','01','02','Jack','New York']
['10','01','03','David','London']
['10','02','01','Jasmine','New Jersey']]

因为我想在此之后做一些循环:

for line in my_list:
     nr1 = line[0]
     nr2 = line[1]
     nr3 = line[2]
     name = line[3]
     place = line[4]

在这里,我将为每一行创建一个类的实例。

我该怎么做?

4 个答案:

答案 0 :(得分:2)

尝试使用csv模块及其reader()方法:

import csv

f = open('file.csv')

the_data = list(csv.reader(f, delimiter r'\t'))[1:]

答案 1 :(得分:1)

他们是tab delimited csv档案。这意味着每个列都由制表符分隔(' \ t')。

以下代码应该有效。
已更新:使用.rstrip()删除\n

import csv

f = open('data.csv')

data = []
for line in f:
    data_line = line.rstrip().split('\t')
    data.append(data_line)

print data

答案 2 :(得分:1)

使用','模块可以轻松完成。唯一的技巧是使输入文件中使用的双字母分隔符在示例中看起来是单个字符import csv from pprint import pprint with open('my_data.csv', 'r', newline='') as csv_file: reader = csv.reader(line.replace(' ', ',') for line in csv_file) my_list = list(reader) pprint(my_list) ,因为它是默认值。

[['nr1', 'nr2', 'nr3', 'name', 'place'],
 ['10', '01', '02', 'Jack', 'New York'],
 ['10', '01', '03', 'David', 'London'],
 ['10', '02', '01', 'Jasmine', 'New Jersey']]

输出:

INSERT INTO MY_EMPLOYEE
VALUES(126,'Popov', 'Olga', 'opopov', 8500), 
    (127, 'Chen', 'Ling', 'lcheng', 14500), 
    (128, 'Dunn', 'David', 'ddunn', NULL);

答案 3 :(得分:0)

试试这个

with open("file.csv","r") as file:
   data = file.read()

data = data.strip(' ').split('\n')

for i in len(data):
   data[i] = data[i].strip(' ').split(',')
   for j in len(data[i]):
      data[i][j] = data[i][j].strip(' ')
print (data)