在列中使用换行符读取csv文件

时间:2019-01-29 18:04:49

标签: python python-3.x csv

我有一个csv文件,其中一列中有换行符('\ n')。 这些行由回车符+换行符(\ r \ n)分隔 分隔符为“;”并全部引用。

我想用空格替换列中的换行符('\ n')。

我已经尝试读取整个文件,并使用split('\ r \ n')来获取行,但这不起作用。

npm install

是否可以逐行读取文件并将'\ r \ n'用作新的行指示符?

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您的代码包含奇怪的 ..您还尝试在.replace()给您的行上使用for row in csv_reader: row是一列列,您无法直接调用replace()。您需要在该行的每一列内替换换行符。

-

您尝试自己读取文件-引用起来很困难。使用module csv再次读取和存储csv要容易得多:

编写演示文件:

import csv

t = [["a", 2, "c\nd", 4], ["aa", "bb", "cc", "dd"], ["aaa", "bbb", "ccc", "ddd"]]

# using the default seperator of: ',' - use delimiter=';' to change it
with open( "d.txt", "w", newline="") as f:
    w = csv.writer(f, quotechar='"', quoting=csv.QUOTE_ALL)
    w.writerows(t)

# print files content
print(open("d.txt").read())

文件内容:

"a","2","c
d","4"
"aa","bb","cc","dd"
"aaa","bbb","ccc","ddd"

读取演示文件,处理数据并存储在列表中

data = []
with open("d.txt") as f:
    r = csv.reader(f, quotechar='"')
    for row in r:
        data.append( [x.replace("\n"," ") for x in row] )

print(t)
print(data)

输出:

# original data
[['a', 2, 'c\nd', 4], ['aa', 'bb', 'cc', 'dd'], ['aaa', 'bbb', 'ccc', 'ddd']]

# parsed and replaced data (some numbers are now strings, \n is replaced)
[['a', '2', 'c d', '4'], ['aa', 'bb', 'cc', 'dd'], ['aaa', 'bbb', 'ccc', 'ddd']]    

将修改后的数据写回新文件:

with open( "d_mod.txt", "w", newline="") as f:
    w = csv.writer(f, quotechar='"', quoting=csv.QUOTE_ALL)
    w.writerows(data)   # modified data

# print new files content
print(open("d_mod.txt").read())

修改后的文件内容:

"a","2","c d","4"
"aa","bb","cc","dd"
"aaa","bbb","ccc","ddd"