删除两个标记之间的文本

2024-07-02 14:28:17 发布

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

我有数据帧。df[0]包含

Eukariota|Organisme eukariotik (hewan, tumbuhan, fungi, dan protista) menyimpan kebanyakan DNA-nya dalam inti sel dan sebagian kecil sisanya dalam organel seperti mitokondria ataupun kloroplas. < ref > {{cite book|last = Russell|first = Peter|title = iGenetics|publisher = Benjamin Cummings|location = New York|year = 2001|isbn = 0-8053-4553-1 }} < /ref >

我想删除:

< ref > {{cite book|last = Russell|first = Peter|title = iGenetics|publisher = Benjamin Cummings|location = New York|year = 2001|isbn = 0-8053-4553-1 }} < /ref >

怎么做?谢谢


Tags: reftitlelocationpublisherpeterfirstlastdan
3条回答

作为示例数据帧:

string1 = 'Eukariota|Organisme eukariotik (hewan, tumbuhan, fungi, dan protista) menyimpan kebanyakan DNA-nya dalam inti sel dan sebagian kecil sisanya dalam organel seperti mitokondria ataupun kloroplas. < ref > {{cite book|last = Russell|first = Peter|title = iGenetics|publisher = Benjamin Cummings|location = New York|year = 2001|isbn = 0-8053-4553-1 }} < /ref >'
string2 = 'Eukariota|Organisme eukariotik {{title}}'
data = [string1, string2]
df = pd.DataFrame(data, columns = ['text'])

使用字符串替换并传递regex = True。如果需要替换其他模式,请使用|符号来额外添加正则表达式模式

new_df = df.text.replace('< ref >.*< \/ref > | {{.*}}','', regex = True)
print(new_df.values[0])
print(new_df.values[1])

Output:
Eukariota|Organisme eukariotik (hewan, tumbuhan, fungi, dan protista) menyimpan kebanyakan DNA-nya dalam inti sel dan sebagian kecil sisanya dalam organel seperti mitokondria ataupun kloroplas. < ref > < /ref >
Eukariota|Organisme eukariotik

我会用正则表达式

这是用于您提到的案例的正则表达式:(\<\sref\s\>.*\<\s\/ref\s\>)

import re

string = 'Eukariota|Organisme eukariotik (hewan, tumbuhan, fungi, dan protista) menyimpan kebanyakan DNA-nya dalam inti sel dan sebagian kecil sisanya dalam organel seperti mitokondria ataupun kloroplas. < ref > {{cite book|last = Russell|first = Peter|title = iGenetics|publisher = Benjamin Cummings|location = New York|year = 2001|isbn = 0-8053-4553-1 }} < /ref >dasda'


string = re.sub('(\<\sref\s\>.*\<\s\/ref\s\>)', '', string)


print(string)

#output: Eukariota|Organisme eukariotik (hewan, tumbuhan, fungi, dan protista) menyimpan kebanyakan DNA-nya dalam inti sel dan sebagian kecil sisanya dalam organel seperti mitokondria ataupun kloroplas. dasda

您可以使用re匹配两个标记之间的所有文本。使用< ref >.*< \/ref >将匹配两个标记中的任何文本

import re

string = 'Eukariota|Organisme eukariotik (hewan, tumbuhan, fungi, dan protista) menyimpan kebanyakan DNA-nya dalam inti sel dan sebagian kecil sisanya dalam organel seperti mitokondria ataupun kloroplas. < ref > {{cite book|last = Russell|first = Peter|title = iGenetics|publisher = Benjamin Cummings|location = New York|year = 2001|isbn = 0-8053-4553-1 }} < /ref >'

string = re.sub(f'< ref >.*< \/ref >', '', string)

string
'Eukariota|Organisme eukariotik (hewan, tumbuhan, fungi, dan protista) menyimpan kebanyakan DNA-nya dalam inti sel dan sebagian kecil sisanya dalam organel seperti mitokondria ataupun kloroplas. '

相关问题 更多 >