Python的“string”模块是什么?

11

我在阅读这个大约是在2002年写的旧模块时看到了这一行代码 "import string"。Python在以前是否需要显式导入string模块才能使用字符串类型变量或其他什么东西?但我在代码中没有看到它被这样使用:

string.something

1
它仍然存在:http://docs.python.org/library/string.html - NullUserException
4个回答

7

string 模块包含一组有用的常量, 例如 ascii_lettersdigits,因此该模块经常被导入。


6
如果你看到 import string 但从未看到 string.something,那么有人只是忘记删除未使用的导入。

虽然以前确实有一些在 string 中的东西现在是 str 对象的标准方法,但你仍然必须要么

  1. 在导入库后用 string. 前缀,或者
  2. 使用 from string import <whatever> 语法。

通常情况下,你只会在正确导入但从未“明确使用”的情况下看到 from __future__ import with_statement 或类似的东西 - 这是Python用于新语言功能的向前/向后兼容性触发器。


1

像Ambar所说,这似乎是一个冗余的导入,RoeeeK也正确地指出了大多数string模块的函数现在都是字符串方法,即您可以使用"foobar".method()而不是string.function("foobar")。然而,有时明确导入模块仍然很有用;例如,在回调的情况下:

map(string.strip, [' foo ', ' bar '])

请注意,上述内容也可以通过[chunk.strip() for chunk in [' foo ', ' bar ']]实现,因此在这种情况下实际上不需要导入string


2
map(str.strip, [' foo ', ' bar ']) - Ignacio Vazquez-Abrams
啊,好的。我觉得我应该知道这个,但不知怎么的,我没想到。谢谢你指出来,尽管这让我的回答变得无意义了。 :) - jena

0

在旧版本中,字符串模块确实更加有用,但在最近的版本中,大多数字符串模块函数也可以作为字符串方法使用。

这个页面会给你更好的了解: http://effbot.org/librarybook/string.htm


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接