Связь между строковым модулем и str - PullRequest
13 голосов
/ 08 января 2010

Какая разница или отношения между str и string ?

import string 
print str
print string 

Ответы [ 5 ]

23 голосов
/ 08 января 2010

str - это встроенная функция (фактически class ), которая преобразует свой аргумент в строку. string - это модуль , который обеспечивает общие операции string .

>>> str
<class 'str'>
>>> str(42)
'42'
>>> import string
>>> string
<module 'string' from '/usr/lib/python3.1/string.py'>
>>> string.digits
'0123456789'

Другими словами, str объекты являются текстовым представлением некоторого объекта o, часто создаваемого путем вызова str(o). Эти объекты имеют определенные методы , определенные на них. Модуль string предоставляет дополнительные функции и константы , которые полезны при работе со строками.

6 голосов
/ 08 января 2010

Существует некоторое совпадение между строковым модулем и типом str, в основном по историческим причинам. В ранних версиях Python str объекты не имели методов, поэтому все операции со строками выполнялись с помощью функций из строкового модуля. Когда методы были добавлены к типу str (в Python 1.5?), Функции были оставлены в строковом модуле для совместимости, но теперь просто перейдем к эквивалентному методу str.

Однако строковый модуль также содержит константы и функции, которые не являются методами в str, такие как форматирование, перевод символов и т. Д.

4 голосов
/ 08 января 2010

Как сказал Stephan202: str - это встроенная функция, которая просто используется для преобразования элемента в строку. У этого также есть много полезных методов. Например:

>>> str(100)
'100' # converts integer into string.

>>> str.lower('foobar')
'FOOBAR'

Теперь давайте поговорим о String .-- Это модуль Python, который имеет очень интересные функции. Один из них Шаблон штуковины

>>> from string import  Template 
>>> t = Template('$foo is a test')
>>> t.substitute (foo='this')
'this is a test' # Replaces $foo variable with 'this'

Есть и другие полезные методы. Предположим, вы хотите все буквы ASCII

>>> string.ascii_letters
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
0 голосов
/ 03 сентября 2017

String является модулем, но обладает теми же способностями, что и класс 'str'.

Я предлагаю набрать 'string' и набрать '.' и подождите несколько секунд, и появится всплывающий список, и вы увидите, что многие из доступных методов также являются частями 'str'.

>>>dir(string)

['Formatter', 'Template', '_TemplateMetaclass', ' builtins ', ' doc ', ' file ', ' имя ',' пакет ',' _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», «нижний регистр», «lstrip», «maketrans» ',' octdigits ',' printable ',' пунктуация ',' replace ',' rfind ',' rindex ',' rjust ',' rsplit ',' rstrip ',' split ',' splitfields ',' strip ', 'swapcase', 'translate', 'upper', 'uppercase', 'whitespace', 'zfill']

или вы можете сделать это:

>>>help(string)

теперь вы должны импортировать String для использования, но str не имеет подобных ограничений.

>>>help(str)

Это также дает похожий список.

Итак, основное отличие в том, что вам нужно импортировать строку, а не строку.

0 голосов
/ 08 января 2010

"строка" - это модуль, который предоставляет функции обработки строк, str - встроенная функция, которая преобразует объект в строковое представление. Никаких отношений между ними.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...