summaryrefslogtreecommitdiffstats
path: root/Lib/string.py
diff options
context:
space:
mode:
authorFred Drake <fdrake@acm.org>2000-07-03 07:23:13 (GMT)
committerFred Drake <fdrake@acm.org>2000-07-03 07:23:13 (GMT)
commit046d27215fd0037f40cc90b85a66f76ff424347e (patch)
treee32451afe0d0323f17fee2ace3a8c700403e2108 /Lib/string.py
parentfcc95a4d04db9f9787c2602132934b88c83f4e51 (diff)
downloadcpython-046d27215fd0037f40cc90b85a66f76ff424347e.zip
cpython-046d27215fd0037f40cc90b85a66f76ff424347e.tar.gz
cpython-046d27215fd0037f40cc90b85a66f76ff424347e.tar.bz2
Martin von Löwis <martin@loewis.home.cs.tu-berlin.de>:
This patch delegates more string functions to string object methods, uses the varargs delegation syntax, and stops using stringold. Closes SourceForge patch #100712.
Diffstat (limited to 'Lib/string.py')
-rw-r--r--Lib/string.py49
1 files changed, 9 insertions, 40 deletions
diff --git a/Lib/string.py b/Lib/string.py
index 5f90723..21781e7 100644
--- a/Lib/string.py
+++ b/Lib/string.py
@@ -125,9 +125,6 @@ def join(words, sep = ' '):
return sep.join(words)
joinfields = join
-# for a little bit of speed
-_apply = apply
-
# Find substring, raise exception if not found
def index(s, *args):
"""index(s, sub [,start [,end]]) -> int
@@ -135,7 +132,7 @@ def index(s, *args):
Like find but raises ValueError when the substring is not found.
"""
- return _apply(s.index, args)
+ return s.index(*args)
# Find last substring, raise exception if not found
def rindex(s, *args):
@@ -144,7 +141,7 @@ def rindex(s, *args):
Like rfind but raises ValueError when the substring is not found.
"""
- return _apply(s.rindex, args)
+ return s.rindex(*args)
# Count non-overlapping occurrences of substring
def count(s, *args):
@@ -155,7 +152,7 @@ def count(s, *args):
interpreted as in slice notation.
"""
- return _apply(s.count, args)
+ return s.count(*args)
# Find substring, return -1 if not found
def find(s, *args):
@@ -168,7 +165,7 @@ def find(s, *args):
Return -1 on failure.
"""
- return _apply(s.find, args)
+ return s.find(*args)
# Find last substring, return -1 if not found
def rfind(s, *args):
@@ -181,7 +178,7 @@ def rfind(s, *args):
Return -1 on failure.
"""
- return _apply(s.rfind, args)
+ return s.rfind(*args)
# for a bit of speed
_float = float
@@ -239,9 +236,7 @@ def ljust(s, width):
never truncated.
"""
- n = width - len(s)
- if n <= 0: return s
- return s + ' '*n
+ return s.ljust(width)
# Right-justify a string
def rjust(s, width):
@@ -252,9 +247,7 @@ def rjust(s, width):
never truncated.
"""
- n = width - len(s)
- if n <= 0: return s
- return ' '*n + s
+ return s.rjust(width)
# Center a string
def center(s, width):
@@ -265,13 +258,7 @@ def center(s, width):
truncated.
"""
- n = width - len(s)
- if n <= 0: return s
- half = n/2
- if n%2 and width%2:
- # This ensures that center(center(s, i), j) = center(s, j)
- half = half+1
- return ' '*half + s + ' '*(n-half)
+ return s.center(width)
# Zero-fill a number, e.g., (12, 3) --> '012' and (-3, 3) --> '-03'
# Decadent feature: the argument may be a string or a number
@@ -302,15 +289,7 @@ def expandtabs(s, tabsize=8):
column, and the tabsize (default 8).
"""
- res = line = ''
- for c in s:
- if c == '\t':
- c = ' '*(tabsize - len(line) % tabsize)
- line = line + c
- if c == '\n':
- res = res + line
- line = ''
- return res + line
+ return s.expandtabs(tabsize)
# Character translation through look-up table.
def translate(s, table, deletions=""):
@@ -380,16 +359,6 @@ def replace(s, old, new, maxsplit=-1):
return s.replace(old, new, maxsplit)
-# XXX: transitional
-#
-# If string objects do not have methods, then we need to use the old string.py
-# library, which uses strop for many more things than just the few outlined
-# below.
-try:
- ''.upper
-except AttributeError:
- from stringold import *
-
# Try importing optional built-in module "strop" -- if it exists,
# it redefines some string operations that are 100-1000 times faster.
# It also defines values for whitespace, lowercase and uppercase