/ / Como remover novas linhas de todos os trechos de texto citados em um arquivo? - python, bash, linha de comando, csv, processamento de texto

Como eu poderia remover novas linhas de todos os textos citados em um arquivo? - python, bash, linha de comando, csv, processamento de texto

Eu exportei um arquivo CSV de um banco de dados. Certos campos são pedaços de texto mais longos e podem conter novas linhas. Qual seria a maneira mais simples de remover somente as novas linhas deste arquivo que estão entre aspas duplas, mas preservando todas as outras?

Não me importo se ele usa uma linha de comando do Bash, um forro ou um script simples, desde que funcione.

Por exemplo,

"Value1", "Value2", "This is a longer piece
of text with
newlines in it.", "Value3"
"Value4", "Value5", "Another value", "value6"

As novas linhas dentro da parte mais longa do texto devem ser removidas, mas não a nova linha que separa as duas linhas.

Respostas:

7 para resposta № 1

Em Python:

import csv
with open("input.csv", "rb") as input, open("output.csv", "wb") as output:
w = csv.writer(output)
for record in csv.reader(input):
w.writerow(tuple(s.remove("n") for s in record))

7 para resposta № 2

Aqui está uma solução em Python:

import re
pattern = re.compile(r"".*?"", re.DOTALL)
print pattern.sub(lambda x: x.group().replace("n", ""), text)

Veja trabalhando on-line: ideone


2 para resposta № 3

Isso é muito simplista, mas pode funcionar para você:

# cat <<! | sed ":a;/"$/{P;D};N;s/n//g;ba"
> "Value1", "Value2", "This is a longer piece
>     of text with
>     newlines in it.", "Value3"
> "Value4", "Value5", "Another value", "value6"
> !
"Value1", "Value2", "This is a longer piece    of text with    newlines in it.", "Value3"
"Value4", "Value5", "Another value", "value6"