2

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

ID, term, functional category
GO:0008166,viral replication,P,
GO:0008167,sigma virus replication,P,
GO:0008168,GO:0004480,methyltransferase activity,F,
GO:0008169,C-methyltransferase activity,F,

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

ID, term, functional category
GO:0008166,viral replication,P,
GO:0008167,sigma virus replication,P,
GO:0008168,,methyltransferase activity,F,
GO:0004480,methyltransferase activity,F,
GO:0008169,C-methyltransferase activity,F,

Я попытался использовать функцию замены, находя экземпляры идентификаторов прямо рядом друг с другом, используя: (\w+:\d+),(\w+:\d+),(.*),[A-Z] и замена на $1,$3,$4\r$2,$3,$4 .

Однако каждый раз, когда я пытаюсь "найти" эти экземпляры в notepad++ он подсвечивает весь список, и команда не работает.

Я не очень опытен в этом, поэтому, если кто-то может мне помочь, я буду благодарен! Спасибо!

Оригинальный файл: http://www.geneontology.org/doc/GO.terms_alt_ids

Я избавился от заголовка и превратил его в CSV, заменив все вкладки запятой.

1 ответ1

1

Найти / заменить повторяющиеся идентификаторы в CSV

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

(GO:[\d]+),(GO:[\d]+)(.*)

заменить на:

$1$3\n$2$3

Давать вывод:

ID, term, functional category
GO:0008166,viral replication,P,
GO:0008167,sigma virus replication,P,
GO:0008168,methyltransferase activity,F,
GO:0004480,methyltransferase activity,F,
GO:0008169,C-methyltransferase activity,F,

Обратите внимание, что это не дублирует запятую в желаемом выводе, так как я думал, что это может быть побочным эффектом, а не желаемым.

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

$1,$3\n$2$3

в качестве замены вместо.

объяснение

(GO:[\d]+) - 1-я группа захвата, соответствует литералу «GO:», за которым следуют одна или несколько цифр ($1)

, - соответствовать буквенной запятой (используется для обнаружения повторяющихся идентификаторов / игнорирования неповторяющихся)

(GO:[\d]+) - 2-я группа захвата, такая же, как первая! ($2)

(.*) - 3-я группа захвата, соответствует 0 или более из «что-нибудь» - сокращение от "остаток строки" здесь ($3)

$1$3\n$2$3 - вывести идентификатор 1 за которым следует остаток строки; затем перевод строки; распечатать идентификатор 2 а затем остаток строки

Предостережение

Имейте в виду, что для работы вышеупомянутого регулярного выражения у вас должна быть опция поиска . matches newline отключены. В противном случае 3-я группа захвата будет совпадать слишком сильно.

точка соответствует новой строке

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .