Заменить весь текст между <ref>и </ref> в python - PullRequest
0 голосов
/ 07 февраля 2020

Я удалил данные из Википедии и создал фрейм данных. df [0] содержит

\n \n == Sifat-sifat DNA == \n  DNA merupakan sebuah polimer yang terdiri dari satuan-satuan berulang yang disebut nukleotida.     Tiap-tiap nukleotida terdiri dari tiga komponen utama, yakni gugus fungsionalgugus fosfat, gula deoksiribosa, dan basa nitrogen (nukleobasa) < ref > {{en}}{{cite web \n  url          = http://www.ncbi.nlm.nih.gov/bookshelf/br.fcgi?book=mboc4 & part=A2 \n  title        = All Cells Replicate Their Hereditary Information by Templated Polymerization \n  accessdate   = 2010-03-19 \n  work         = Bruce Alberts, et al. \n }} < /ref > . Pada DNA, nukleobasa yang ditemukan adalah Adenina (A), Guanina (G), Sitosina (C) dan Timina (T).

Я хочу удалить:

< ref > {{en}}{{cite web \n  url          = http://www.ncbi.nlm.nih.gov/bookshelf/br.fcgi?book=mboc4 & part=A2 \n  title        = All Cells Replicate Their Hereditary Information by Templated Polymerization \n  accessdate   = 2010-03-19 \n  work         = Bruce Alberts, et al. \n }} < /ref > 

Мне нужен способ сделать замену (или просто удалить) и текст между "" и "", чтобы при вызове df [0] теперь равнялся:

\n \n == Sifat-sifat DNA == \n  DNA merupakan sebuah polimer yang terdiri dari satuan-satuan berulang yang disebut nukleotida.     Tiap-tiap nukleotida terdiri dari tiga komponen utama, yakni gugus fungsionalgugus fosfat, gula deoksiribosa, dan basa nitrogen (nukleobasa). Pada DNA, nukleobasa yang ditemukan adalah Adenina (A), Guanina (G), Sitosina (C) dan Timina (T).

Я попытался:

df['Body'] = df['Body'].str.replace('< ref >.*?< /ref >','',regex=True)
df['Body'] = df['Body'].str.replace('< ref >.*< \/ref >','',regex=True)

, но вывод все еще не изменился вот так

\n \n == Sifat-sifat DNA == \n  DNA merupakan sebuah polimer yang terdiri dari satuan-satuan berulang yang disebut nukleotida.     Tiap-tiap nukleotida terdiri dari tiga komponen utama, yakni gugus fungsionalgugus fosfat, gula deoksiribosa, dan basa nitrogen (nukleobasa) < ref > {{en}}{{cite web \n  url          = http://www.ncbi.nlm.nih.gov/bookshelf/br.fcgi?book=mboc4 & part=A2 \n  title        = All Cells Replicate Their Hereditary Information by Templated Polymerization \n  accessdate   = 2010-03-19 \n  work         = Bruce Alberts, et al. \n }} < /ref > . Pada DNA, nukleobasa yang ditemukan adalah Adenina (A), Guanina (G), Sitosina (C) dan Timina (T).

В то время как мне нужно, как я объяснил ранее. Я не могу найти подстановочные знаки, которые, кажется, работают. Любая помощь очень ценится.

1 Ответ

3 голосов
/ 07 февраля 2020

Проблема в том, что Python регулярное выражение не будет сопоставлять символы новой строки с точкой по умолчанию. То, что мы можем сделать, это сопоставить все до закрытия ref

df['Body'] = df['Body'].str.replace('< ref >[\s\S]*< /ref >', '', regex=True)

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

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