Python删除CSV文件中引号内的所有\ r \ n

时间:2018-12-03 10:33:20

标签: python string csv replace

我有一个CSV文件,其中包含一些数据。我想用一些字符替换“”中的所有换行符。但是这些引号之外的新行应该保留。实现此目标的最佳方法是什么?

import sys, getopt

def main(argv):
    inputfile = ''
    outputfile = ''

    print(argv[0:])
    inputfile = argv[0:]

    file_object = open(argv[0:], "r")
    print(file_object)

    data = file.read(file_object)
    strings = data.split('"')[1::2]

    for string in strings:
        string.replace("\r", "")
        string.replace("\n", "")
        print(string)

    f = open("output.csv", "w")
    for string in strings:
        string = string.replace("\r", "")
        string = string.replace("\n", "")
        f.write(string)

    f.close()


if __name__ == "__main__":
    main(sys.argv[1])

这不太奏效,因为“”和一样会丢失。

预期输入:

“dssdlkfjsdfj   \r\n ashdiowuqhduwqh \r\n”,
 "3"

预期输出:

"dssdlkfjsdfj    ashdiowuqhduwqh",
 "3"

2 个答案:

答案 0 :(得分:1)

一个真实的示例会有所帮助,但要考虑到in.csv

"multi
line
data","more data"
"more multi
line data","other data"

以下内容将替换引号中的换行符:

import csv

with open('in.csv',newline='') as fin:
    with open('out.csv','w',newline='') as fout:
        r = csv.reader(fin)
        w = csv.writer(fout)
        for row in r:
            row = [col.replace('\r\n','**') for col in row]
            w.writerow(row)

out.csv:

multi**line**data,more data
more multi**line data,other data

答案 1 :(得分:0)

问题很容易解决。创建一个输出文件,并读取每个字符的输入文件。将每个字符写入输出文件,但是当出现“”时,使用〜运算符切换替换模式。在替换模式下,将所有\ r \ n替换为“(什么都没有)。