Удалить некоторые точки с запятой в файле данных - PullRequest
0 голосов
/ 20 января 2019

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

a;bfcse;g
g;qdq;d;u
q;g;sd;;o
c;dd;ea;b
w;;rz;z;m

И я хотел бы использовать это с помощью регулярного выражения (потому что я пытаюсь выбрать столбец и выполнить замену, но она не работает, кнопка в блокноте ++ была серой для замены в моем выборе):

a;bfcse;g
g;qdqd;u
q;gsd;o
c;ddea;b
w;rzz;m

Я думал, что что-то вроде подстроки может работать, но с notepad ++ и sublimetext это трудно ...

У вас есть идеи?

Большое спасибо!

РЕДАКТИРОВАТЬ: Но я думаю, что очень ясно, что я хочу сделать, это удалить точки с запятой ничем в этой области:

  -------
a;|bfcse|;g
g;|qdq;d|;u
q;|g;sd;|;o
c;|dd;ea|;b
w;|;rz;z|;m
  -------

Ответы [ 2 ]

0 голосов
/ 20 января 2019

Использование Блокнота ++

  • Ctrl + H
  • Найти что: (^.+?;|\G)(.*?);?(?=.*?;.+?$)
  • Заменить на:$1$2
  • check Обтекание
  • check Регулярное выражение
  • UNCHECK . matches newline
  • Заменить все

Объяснение:

(               # group 1
  ^             # beginning of line
  .+?           # 1 or more any character but newline, not greedy
  ;             # a semicolon
 |              # OR
  \G            # restart from last match position
)               # end group 1
(.*?)           # group 2, 0 or more any character but newline, not greedy
;?              # optional semicolon
(?=             # start lookahead, make sure we have after:
  .*?           # 0 or more any character but newline, not greedy
  ;             # a semicolon
  .+?           # 1 or more any character but newline, not greedy
  $             # end of line
)               # end of lookahead

Замена:

$1          # content of group 1
$2          # content of group 2

Результат для данного примера:

a;bfcse;g
g;qdqd;u
q;gsd;o
c;ddea;b
w;rzz;m

enter image description here

0 голосов
/ 20 января 2019

Я бы создал новую переменную и добавил бы все, что не является точкой с запятой, например:

nosemicolons = ('')
somesemicolons = ('''  -------
a;|bfcse|;g
g;|qdq;d|;u
q;|g;sd;|;o
c;|dd;ea|;b
w;|;rz;z|;m
  -------''')
while len(somesemicolons) != 0:
    if somesemicolons[:1] != ';':
        nosemicolons = nosemicolons + somesemicolons[:1]
        somesemicolons = somesemicolons[1:]
    else:
        somesemicolons = somesemicolons[1:] #placeholder
print(nosemicolons)

Который выводит:

  -------
a|bfcse|g
g|qdqd|u
q|gsd|o
c|ddea|b
w|rzz|m
  -------

К сожалению, это выглядит менее похоже наТаблица.Вы можете изменить это так, чтобы оно добавляло '' вместо ничего к выводу (см. Заполнитель).Надеюсь, это поможет.

...