我有以下Python代码。它读取csv文件并将第一列输出到新的csv文件。
但问题是在我的csv文件中除了用于创建新行的新行之外还有\ n。但它们包含在双引号内。
例如:
A, B, C,
D, "12
34", E,
F, G, H
所以我想我需要在某处添加quotechar ='“',但我无法理解。
f_in = open('source.csv')
fields = []
for line in f_in.readlines():
fields.append([item.strip('\n') for item in line.split(',')])
f_in.close()
f_out = open('sourceNew.csv', 'w')
for i in range(len(fields)):
if fields[i][0] != '':
f_out.write(fields[i][0] + ',,\n')
f_out.close()
如何区分双引号中包含的真实新行\ n和\ n。
由于
答案 0 :(得分:6)
使用Python CSV模块:
import csv
records = []
reader = csv.reader(open('source.csv', 'rb'))
for record in reader:
print record
records.append(record)
我希望这会有所帮助。
答案 1 :(得分:0)
是的,
import csv
f_in = csv.reader (open('source.csv'), quotechar='"')
fields = []
for line in f_in:
fields.append(line)
f_out = open('sourceNew.csv', 'w')
for i in range(len(fields)):
if fields[i][0] != '':
f_out.write(fields[i][0] + ',,\n')
f_out.close()import csv
f_in = csv.reader (open('source.csv'), quotechar='"')
fields = []
for line in f_in:
fields.append(line)
f_out = open('sourceNew.csv', 'w')
for i in range(len(fields)):
if fields[i][0] != '':
f_out.write(fields[i][0] + ',,\n')
f_out.close()
感谢。
答案 2 :(得分:0)
使用python 3的正确方法是使用newline=''
。从csv documentation和示例中可以看到。他们在打开文件时始终使用newline=''
。
import csv
with open('some.csv', 'w', newline='') as f:
在脚注中
[1](1,2)如果未指定newline ='',嵌入引号字段中的换行符将无法正确解释,并且在使用\ r \ n lindings的平台上将添加一个额外的\ r 。指定newline =''应该总是安全的,因为csv模块会执行自己的(通用)换行处理。