J'ai des dataframe. Le df [0] contient
< ref > {{cite book|last = Russell|first = Peter|title = iGenetics|publisher = Benjamin Cummings|location = New York|year = 2001|isbn = 0-8053-4553-1 }} < /ref >
Je veux supprimer:
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 >
Comment faire cela? Merci
4 Réponses :
J'utiliserais Regex.
Voici la regex à utiliser pour le cas que vous mentionnez: (\ . * \ )
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
Comment si l'entrée est dataframe?
Convertissez chaque ligne en chaîne et enregistrez-la à nouveau dans une liste que vous pouvez reconvertir en dataframe? Je ne suis pas très familier avec les dataframes, mais je suppose que regex pourrait également être utilisé dans un dataframe?
J'ai trouvé cet article sur les dataframes: pandas.pydata.org/pandas-docs /stable/user_guide/text.html
Vous pouvez utiliser re
pour faire correspondre tout le texte entre les deux balises. L'utilisation de . *
correspondra à tout texte qui se trouve dans les deux balises.
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. '
avec un simple tranchage?
new_string = string[0 : string.find("< ref >"]
Comme exemple de dataframe:
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
Utilisez pandas string replace et passez regex = True
. Si vous avez des modèles supplémentaires à remplacer, utilisez le symbole |
pour ajouter en plus des modèles d'expression régulière.
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'])
Comment si je veux supprimer du texte entre {{et}}, je veux dire que je veux supprimer ceci: {{text}}?
J'ai ajouté à ma réponse. Veuillez accepter comme réponse si cela résout cette question. Si vous avez une question plus ciblée sur les regex, je vous suggère de poser une autre question. Merci.
[ stackoverflow.com/questions/ 60038635 /… veuillez répondre
Bien sûr, c'est fait. Petit changement mais les espaces étaient les problèmes, reportez-vous à la réponse là-bas.
Est-ce que cela répond à votre question? Comment remplacer un caractère dans une colonne d'un dataframe Pandas?