Commit 5aff7752 authored by Guido van Rossum's avatar Guido van Rossum

Make string.translate(s, table) work for Unicode s. Two things are

required to work around restrictions on the arguments of
u.translate():

1) don't pass the deletions argument if it's empty;

2) convert table to Unicode if s is Unicode.

This fixes SF bug #124060.
parent cda4f9a8
......@@ -297,15 +297,22 @@ def expandtabs(s, tabsize=8):
# Character translation through look-up table.
def translate(s, table, deletions=""):
"""translate(s,table [,deletechars]) -> string
"""translate(s,table [,deletions]) -> string
Return a copy of the string s, where all characters occurring
in the optional argument deletechars are removed, and the
in the optional argument deletions are removed, and the
remaining characters have been mapped through the given
translation table, which must be a string of length 256.
translation table, which must be a string of length 256. The
deletions argument is not allowed for Unicode strings.
"""
return s.translate(table, deletions)
if deletions:
return s.translate(table, deletions)
else:
# Add s[:0] so that if s is Unicode and table is an 8-bit string,
# table is converted to Unicode. This means that table *cannot*
# be a dictionary -- for that feature, use u.translate() directly.
return s.translate(table + s[:0])
# Capitalize a string, e.g. "aBc dEf" -> "Abc def".
def capitalize(s):
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment