替换python中<ref>和<ref>之间的所有文本

2024-10-01 07:30:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我从维基百科中搜集了一些数据,并创建了一个数据框架。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 > 

我需要一种方法来进行替换(或只是删除)并在“<;ref>;”和“<;/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).

而我需要的是我之前解释过的。我找不到任何似乎有效的通配符。非常感谢您的帮助


Tags: refdfbodydnayangdandarisatuan
1条回答
网友
1楼 · 发布于 2024-10-01 07:30:53

问题是Python正则表达式在默认情况下不会将换行符与点匹配。我们所能做的是匹配所有内容,直到结束ref

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

我从这里得到了正则表达式的想法:matching any character including newlines in a Python regex subexpression, not globally

相关问题 更多 >