我有一个csv文件,其中一列中有换行符('\ n')。 这些行由回车符+换行符(\ r \ n)分隔 分隔符为“;”并全部引用。
我想用空格替换列中的换行符('\ n')。
我已经尝试读取整个文件,并使用split('\ r \ n')来获取行,但这不起作用。
npm install
是否可以逐行读取文件并将'\ r \ n'用作新的行指示符?
非常感谢您的帮助!
答案 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"