Je supprime un caractère d'une chaîne comme ceci:
S = "abcd"
Index=1 #index of string to remove
ListS = list(S)
ListS.pop(Index)
S = "".join(ListS)
print S
#"acd"
Je suis sûr que c'est pas la meilleure façon de le faire.
EDIT Je n’ai pas mentionné la nécessité de manipuler une taille de chaîne de longueur ~ 10 ^ 7. Il est donc important de veiller à l'efficacité.
Est-ce que quelqu'un peut m'aider. Quel moyen pythonique de le faire?
Vous pouvez ignorer toutes les opérations de liste avec le découpage en tranches:
S = S[:1] + S[2:]
ou plus généralement
S = S[:Index] + S[Index + 1:]
Vous trouverez de nombreuses réponses à votre question (y compris celles-ci) ici: Comment supprimer un caractère d'une chaîne à l'aide de python . Cependant, cette question concerne en principe la suppression par valeur, pas par index.
Le découpage en tranches est la meilleure et la plus simple approche à laquelle je puisse penser.
>>> s = 'abcd'
>>> def remove(s, indx):
return ''.join(x for x in s if s.index(x) != indx)
>>> remove(s, 1)
'acd'
>>>
>>>
>>> def remove(s, indx):
return ''.join(filter(lambda x: s.index(x) != 1, s))
>>> remove(s, 1)
'acd'
N'oubliez pas que l'indexation est basée sur zéro.
Vous pouvez remplacer le caractère d'index par "".
str = "ab1cd1ef"
Index = 3
print(str.replace(str[Index],"",1))