2012-03-25 179 views
6

字符串是一個模塊,str是一種類型。 我發現str有方法,str的一些方法和字符串一樣。Python中的string方法和str方法有什麼區別?

>>>dir(str) 
['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', 
'__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', 
'__getslice__', '__gt__', '__hash__', '__init__', '__le__', '__len__', '__lt__', 
'__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', 
'__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', 
'__subclasshook__', '_formatter_field_name_split', '_formatter_parser', 
'capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs', 
'find', 'format', 'index', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 
'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'partition', 'replace', 
'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 
'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 
'zfill'] 

>>> dir(string) 
['Formatter', 'Template', '_TemplateMetaclass', '__builtins__', '__doc__', 
'__file__', '__name__', '__package__', '_float', '_idmap', '_idmapL', '_int', 
'_long', '_multimap', '_re', 'ascii_letters', 'ascii_lowercase', 'ascii_uppercase', 
'atof', 'atof_error', 'atoi', 'atoi_error', 'atol', 'atol_error', 'capitalize', 
'capwords', 'center', 'count', 'digits', 'expandtabs', 'find', 'hexdigits', 'index', 
'index_error', 'join', 'joinfields', 'letters', 'ljust', 'lower', 'lowercase', 
'lstrip', 'maketrans', 'octdigits', 'printable', 'punctuation', 'replace', 'rfind', 
'rindex', 'rjust', 'rsplit', 'rstrip', 'split', 'splitfields', 'strip', 'swapcase', 
'translate', 'upper', 'uppercase', 'whitespace', 'zfill'] 

這兩套方法有什麼區別? str或string可以使用對方的方法嗎?

回答

8

string現在是已棄用的模塊。您應始終使用str對象。

>>> help(str) 
Help on class str in module __builtin__: 

class str(basestring) 
| str(object) -> string 
| 
| Return a nice string representation of the object. 
| If the argument is a string, the return value is the same object. 
. 
. 
>>>help(string) 
Help on module string: 

NAME 
    string - A collection of string operations (most are no longer used). 

FILE 
    /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/string.py 

MODULE DOCS 
    http://docs.python.org/library/string 

DESCRIPTION 
    Warning: most of the code you see here isn't normally used nowadays. 
    Beginning with Python 1.6, many of these functions are implemented as 
    methods on the standard string object. They used to be implemented by 
    a built-in module called strop, but strop is now obsolete itself. 
+0

我現在看到。謝謝! – Huo 2012-03-25 07:50:50

+2

總是? 'ascii_letters','maketrans'和'string'中所有其他有用的方法/屬性如何? – 2012-03-25 08:32:30

+0

是的,可能並不總是,但作爲一般規則。 – ronakg 2012-03-25 11:09:37

6

STR方法加入到Python,許多現有串模塊的被改寫爲圍繞STR方法薄包裝函數。例如,這裏是字符串模塊中的功能的源代碼:

# convert UPPER CASE letters to lower case 
def lower(s): 
    """lower(s) -> string 

    Return a copy of the string s converted to lowercase. 

    """ 
    return s.lower() 
+0

感謝您的幫助! – Huo 2012-03-25 07:52:31

相關問題