Python удаляет все \ r \ n в кавычках в файле CSV - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть файл 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 голосов
/ 03 декабря 2018

Реальный образец поможет, но с учетом 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
0 голосов
/ 03 декабря 2018

Проблема решена очень просто.Создайте выходной файл и прочитайте входной файл для каждого символа.Запишите каждый символ в выходной файл, но переключите режим замены, используя оператор ~, когда появляется «. В режиме замены замените все \ r \ n на '' (ничего).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...