4

我有以下 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 。

谢谢

4

3 回答 3

7

使用Python CSV模块:

import csv

records = []
reader = csv.reader(open('source.csv', 'rb'))

for record in reader:
    print record
    records.append(record)

我希望这有帮助。

于 2012-11-20T12:10:13.240 回答
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()

谢谢。

于 2012-11-20T12:11:52.170 回答
0

使用 python 3 的正确方法是使用newline=''. 正如您从csv 文档和示例中看到的那样。newline=''他们在打开文件时始终使用。

import csv
with open('some.csv', 'w', newline='') as f:

来自脚注

[1] (1, 2) 如果未指定 newline='',则嵌入在引用字段中的换行符将不会被正确解释,并且在使用 \r\n linendings on write 的平台上将添加额外的 \r。指定 newline='' 应该始终是安全的,因为 csv 模块会执行自己的(通用)换行处理。

于 2019-05-02T17:21:22.510 回答