comment remplacer toutes les occurrences de certains personnages?
Je suis de la lecture d'un fichier csv dans a
:
import csv
import collections
import pdb
import math
import urllib
def do_work():
a=get_file('c:/pythonwork/cds/cds.csv')
a=remove_chars(a)
print a[0:10]
def get_file(start_file): #opens original file, reads it to array
with open(start_file,'rb') as f:
data=list(csv.reader(f))
return (data)
def remove_chars(a):
badchars=['a','b','c','d']
for row in a:
for letter in badchars:
row[8].replace(letter,'')
return a
Je voudrais remplacer toutes les occurrences de ['a','b','c','d']
dans le 8ème élément de la ligne avec une chaîne vide. le remove_chars
ne fonctionne pas.
Est-il une meilleure façon de le faire?
- 8 élément qui est en ligne[7], en raison de l'indexation commence à partir de 0.
Vous devez vous connecter pour publier un commentaire.
Le problème est que vous ne faites pas n'importe quoi avec le résultat de
replace
. En Python, les chaînes sont immuables, donc tout ce qui manipule une chaîne de caractères retourne une nouvelle chaîne au lieu de modifier la chaîne d'origine.Je voudrais utiliser la méthode translate sans table de traduction. Il supprime les lettres dans le second argument dans les dernières versions de Python.
remove_chars
ne devrait pas, en général, de façon destructrice modifier la valeur d'une variable globale.translate
méthode fonctionne différemment avec des chaînes unicode. Donc, si vous êtes en train de faire juste un caractère,replace
, qui fonctionne de la même pour les deux chaînes de caractères et unicode, est probablement préférable.Vous devriez vraiment avoir des entrées multiples, par exemple un pour le prénom, deuxième prénom, nom et un autre pour l'âge. Si vous voulez vous amusez-vous bien que vous pourriez essayer:
Ce serait bien sûr d'échouer si il y a plusieurs numéros dans l'entrée. une vérification rapide serait:
et aussi: