web-dev-qa-db-fra.com

le plus simple python équivalent au gsub de R

Existe-t-il une ligne simple python équivalente à la fonction gsub de R?

strings = c("Important text,      !Comment that could be removed", "Other String")
gsub("(,[ ]*!.*)$", "", strings) 
# [1] "Important text" "Other String"  
17
Deena

Pour une chaîne:

import re
string = "Important text,      !Comment that could be removed"
re.sub("(,[ ]*!.*)$", "", string)

Puisque vous avez mis à jour votre question pour qu'elle soit une liste de chaînes, vous pouvez utiliser une compréhension de liste.

import re
strings = ["Important text,      !Comment that could be removed", "Other String"]
[re.sub("(,[ ]*!.*)$", "", x) for x in strings]
25
Nick Becker

gsub est le sub normal dans python - c'est-à-dire qu'il fait plusieurs remplacements par défaut.

La signature de méthode pour re.sub Est sub(pattern, repl, string, count=0, flags=0)

Si vous voulez qu'il fasse un seul remplacement, vous spécifiez count=1:

In [2]: re.sub('t', 's', 'butter', count=1)
Out[2]: 'buster'

re.I Est l'indicateur d'insensibilité à la casse:

In [3]: re.sub('here', 'there', 'Here goes', flags=re.I)
Out[3]: 'there goes'

Vous pouvez passer une fonction qui prend un objet de correspondance:

In [13]: re.sub('here', lambda m: m.group().upper(), 'Here goes', flags=re.I)
Out[13]: 'HERE goes'
5
Benjamin Atkin