Заключение блока текста в кавычки (или любую другую пару символов) в CSV - PullRequest
0 голосов
/ 28 мая 2019

У меня есть файл .csv, и мне нужно сделать следующее: для каждой строки , начиная с конца строки, текст, который появляется после определенного числавхождений указанного символа должны быть заключены в кавычки.

Я постараюсь прояснить для себя пример.Рассмотрим следующую строку csv:

gentlemen, this is a block of text. Thanks!,1,0,0,1

Я хочу заключить в кавычки фрагмент строки, который начинается, начиная с конца, после четвертого вхождения запятой ,Итак, оно должно стать:

"gentlemen, this is a block of text. Thanks!",1,0,0,1

Я бы хотел сделать это в bash, pure python или pandas.

Ответы [ 2 ]

2 голосов
/ 28 мая 2019

С седом:

$ sed -E 's/(.*)((,.*){4})/"\1"\2/' <<< 'gentlemen, this is a block of text. Thanks!,1,0,0,1'
"gentlemen, this is a block of text. Thanks!",1,0,0,1

Используются две группы захвата. Важной частью является (,.*){4}: это четыре символа запятой, за которыми следует что-либо. Поскольку первая группа соответствует жадно, вторая группа будет соответствовать последним четырем запятым в строке.

Подстановка помещает двойные кавычки вокруг первой группы и печатает вторую группу без изменений.

1 голос
/ 28 мая 2019

На питоне:

line = r'gentlemen, this is a block of text. Thanks!,1,0,0,1'
num_commas = 4
comma_count = 0
for c in reversed(line):
    from_end += 1
    if c == ',':
        comma_count += 1
    if comma_count >= num_commas:
        break
line[:-from_end]
# 'gentlemen, this is a block of text. Thanks!'

Остальное академическое.

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