Python idiom: Multiple search-and-replace

Randall Hopper aa8vb at yahoo.com
Wed Apr 12 11:40:01 EDT 2000


Siggy Brentrup:
 |Randall Hopper:
 |> I want to do search-and-replace of multiple symbols on each line of a file.
 |> But the simple-minded code below takes a while.
...
 |> --------------------------------------------------------------------------
 |> 
 |>   symbol_map = { 'oldsym1' : 'newsym1', oldsym2' : 'newsym2', ... }
 |>   fp = open( net_path, "r" )
 |> 
 |>   while 1:
 |>     line = fp.readline()
 |>     if not line: break
 |> 
 |>     for old_sym in symbol_map.keys():
 |>       line = string.replace( line, old_sym, symbol_map[ old_sym ] )
 |> 
 |>     out_fp.write( line )
 |> 
 |> --------------------------------------------------------------------------
 |
 |symbol_items = symbol_map.items()
 |
 |while 1:
 |    line = fp.readline()
 |    if not line: break
 |
 |    for old, new in symbol_items:
 |        line = string.replace(line, old, new)
 |
 |    out_fp.write(line)


Actually I'd tried this.  About the same speed (a few seconds slower).  The
dictionary lookups were not slowing the original algorithm.  But thanks.

-- 
Randall Hopper
aa8vb at yahoo.com




More information about the Python-list mailing list