您在这里:首页 > 深入 Python > 原生数据类型 > 连接列表和拆分字符串 | << >> | ||||
深入 Python从 Python 新手到专家 |
您有一个以 键=值 形式的键值对列表,并且您想将它们连接成一个字符串。要将任何字符串列表连接成一个字符串,请使用字符串对象的 join 方法。
以下是从 buildConnectionString 函数连接列表的示例
return ";".join(["%s=%s" % (k, v) for k, v in params.items()])
在继续之前,请注意一个有趣的地方。我一直重复说函数是对象,字符串是对象……一切都是对象。您可能认为我的意思是字符串变量是对象。但并非如此,仔细观察此示例,您会发现字符串 ";" 本身就是一个对象,并且您正在调用它的 join 方法。
join 方法将列表的元素连接成一个字符串,每个元素之间用分号分隔。分隔符不必是分号;它甚至不必是单个字符。它可以是任何字符串。
![]() |
|
join 仅适用于字符串列表;它不执行任何类型强制转换。连接包含一个或多个非字符串元素的列表将引发异常。 |
>>> params = {"server":"mpilgrim", "database":"master", "uid":"sa", "pwd":"secret"} >>> ["%s=%s" % (k, v) for k, v in params.items()] ['server=mpilgrim', 'uid=sa', 'database=master', 'pwd=secret'] >>> ";".join(["%s=%s" % (k, v) for k, v in params.items()]) 'server=mpilgrim;uid=sa;database=master;pwd=secret'
然后,此字符串从 odbchelper 函数返回并由调用块打印,这为您在开始阅读本章时感到惊叹的输出提供了答案。
您可能想知道是否有一种类似的方法可以将字符串拆分为列表。当然有,它叫做 split。
>>> li = ['server=mpilgrim', 'uid=sa', 'database=master', 'pwd=secret'] >>> s = ";".join(li) >>> s 'server=mpilgrim;uid=sa;database=master;pwd=secret' >>> s.split(";")['server=mpilgrim', 'uid=sa', 'database=master', 'pwd=secret'] >>> s.split(";", 1)
['server=mpilgrim', 'uid=sa;database=master;pwd=secret']
![]() |
|
anystring.split(delimiter, 1) 是一种有用的技术,当您想在字符串中搜索子字符串,然后处理子字符串之前(最终位于返回列表的第一个元素中)和之后的所有内容(最终位于第二个元素中)时。 |
当我第一次学习 Python 时,我希望 join 是列表的一种方法,它将分隔符作为参数。许多人都有同样的感受,join 方法背后有一个故事。在 Python 1.6 之前,字符串并没有所有这些有用的方法。有一个单独的 string 模块包含所有字符串函数;每个函数都将字符串作为其第一个参数。这些函数被认为足够重要,可以放到字符串本身上,这对于 lower、upper 和 split 等函数来说是有意义的。但是许多 Python 核心程序员反对新的 join 方法,他们认为它应该是列表的一种方法,或者它不应该移动,而应该只是旧 string 模块的一部分(它仍然有很多有用的东西)。我专门使用新的 join 方法,但您会看到以任何一种方式编写的代码,如果它真的困扰您,您可以改用旧的 string.join 函数。
<< 映射列表 |
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |
总结 >> |