How do you replace all the occurrences of a certain character in a string?

Posted on

Question :

How do you replace all the occurrences of a certain character in a string?

I am reading a csv into a:

import csv
import collections
import pdb
import math
import urllib

def do_work():
  print a[0:10]

def get_file(start_file): #opens original file, reads it to array
  with open(start_file,'rb') as f:
  return (data)

def remove_chars(a):
  for row in a:
    for letter in badchars:
  return a

I would like to replace all occurrences of ['a','b','c','d'] in the 8th element of the line with empty string. the remove_chars function is not working.

Is there a better way to do this?

Answer #1:

The problem is you’re not doing anything with the result of replace. In Python strings are immutable so anything that manipulates a string returns a new string instead of modifying the original string.

line[8] = line[8].replace(letter, "")
Answered By: Matti Virkkunen

Answer #2:

I would use the translate method without translation table. It deletes the letters in second argument in recent Python versions.

def remove_chars(line):
    return line[:7]+[line7]+line[8:]

line= ['ad','da','sdf','asd',
print line[7]
line = remove_chars(line)
print line[7]
Answered By: Tony Veijalainen

Answer #3:

You really should have multiple input, e.g. one for firstname, middle names, lastname and another one for age. If you want to have some fun though you could try:

>>> input_given="join smith 25"
>>> chars="".join([i for i in input_given if not i.isdigit()])
>>> age=input_given.translate(None,chars)
>>> age
>>> name=input_given.replace(age,"").strip()
>>> name
'join smith'

This would of course fail if there is multiple numbers in the input. a quick check would be:

assert(age in input_given)

and also:

Answered By: robert king

Leave a Reply

Your email address will not be published. Required fields are marked *