繁体   English   中英

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

[英]How to read csv file lines and split elements in line into list of lists?

我有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]

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

我怎样才能做到这一点?

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

import csv

f = open('file.csv')

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

它们是制表符分隔的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

使用csv模块使其非常容易。 唯一的技巧是使输入文件中使用的两个字母的定界符看起来像是单个字符',' ,因为它是默认字符。

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']]

尝试这个

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM