从CSV中删除新行\ n读取

时间:2014-11-27 17:08:32

标签: python list csv

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

Name1,1,2,3
Name2,1,2,3
Name3,1,2,3

我需要逐行将其读入2D列表。我写的代码几乎完成了这项工作;但是,我在删除第三个索引末尾的新行字符'\n'时遇到问题。

    score=[]

    for eachLine in file:
            student = eachLine.split(',')
            score.append(student)
    print(score)

目前的输出如下:

[['name1', '1', '2', '3\n'], ['name2', '1', '2', '3\n'],

我需要它看起来像:

[['name1', '1', '2', '3'], ['name2', '1', '2', '3'],

4 个答案:

答案 0 :(得分:2)

在处理它们时,只需在每一行上调用str.strip

score=[]

for eachLine in file:
        student = eachLine.strip().split(',')
        score.append(student)
print(score)

答案 1 :(得分:1)

您可以使用splitlines

第一种方法

>>> s = '''Name1,1,2,3
... Name2,1,2,3
... Name3,1,2,3'''
>>> [ item.split(',') for item in s.splitlines() ]
[['Name1', '1', '2', '3'], ['Name2', '1', '2', '3'], ['Name3', '1', '2', '3']]

第二种方法

>>> l = []
>>> for item in s.splitlines():
...     l.append(item.split(','))
... 
>>> l
[['Name1', '1', '2', '3'], ['Name2', '1', '2', '3'], ['Name3', '1', '2', '3']]

答案 2 :(得分:0)

如果您知道它是\ n和\ n \ n,

score=[]

for eachLine in file:
        student = eachLine[:-1].split(',')
        score.append(student)
print(score)

在拆分发生之前,使用切片删除尾随的新行字符。

根据评论员的建议编辑;)更加整洁。

答案 3 :(得分:0)

使用rstrip函数识别每行末尾的\ n并将其删除。 请参阅以下代码以供参考。

with open('myfile.csv', 'wb') as file: 
    for line in file:
        line.rstrip('\n')
        file.write(line)