удалить одну запятую с помощью скрипта Python - PullRequest
4 голосов
/ 28 июня 2011

У меня есть CSV-файл со строкой, которая выглядит примерно так:

,,,,,,,,,,

Это 10 запятых.Я хочу удалить только последнюю (т. Е. 10-ю) запятую, чтобы строка изменилась на:

,,,,,,,,,

Кто-нибудь имел опыт работы с таким случаем?Я также использую текстовый редактор vim.Таким образом, любая помощь с использованием сценариев Python или команд редактирования текста с использованием vim будет признательна.

Спасибо, ребята!

Ответы [ 4 ]

10 голосов
/ 28 июня 2011

Удаление последней запятой в текущей строке в vim: :s/,$//

То же самое для строк от n до m: :n,ms/,$//

То же самое для всего файла: :%s/,$//

3 голосов
/ 28 июня 2011

Это будет сделано в простейшем случае, как только вы обновите свой вопрос тем, что ищете, я обновлю код.

commas = ",,,,,,,,,,,"
print commas.replace(","*10, ","*9)

Если вы хотите удалить последнюю запятую в любой строке, вы можете сделать:

import re
commas = """,,,,,,,,,,
            ,,,,,,,,,,"""
print re.sub(r',$', '', commas, re.MULTILINE)

А если в любом файле вы хотите взять строку, состоящую всего из 10 запятых, и сделать из нее 9 запятых:

import re
commas = ",,,,,,,,,,\n,,,,,,,,,,\n,,,,,,,,,,"
print re.sub(r'^,{10}$', ','*9, commas, re.MULTILINE)
2 голосов
/ 28 июня 2011

Я бы использовал:

sed -i 's/,$//' file.csv
1 голос
/ 02 июля 2011

Мне очень нравится нормальная команда VIM.Поэтому, если вы хотите удалить последний «столбец» из этого CSV-файла, я бы сделал так:

:%normal $F,D

Другими словами, выполните в каждой строке этого файла (%) следующие процедуры(normal):

  1. $ - перейти в конец строки;
  2. F, - переместить курсор к запятой предварительного просмотра в этой строке;
  3. D - Удалить от курсора до конца строки;

Также это можно использовать с диапазонами (от строки 1 до 20):

:1,20normal $F,D

Но если нет ничего, кроме множества запятых без данных между ними, вы можете просто сделать:

:%normal $X
...