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

2024-10-02 22:34:15 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

我该怎么做?


Tags: 文件csvname元素newlineplacedavid
3条回答

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

它们是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

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

import csv

f = open('file.csv')

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

相关问题 更多 >