Python Cookbook 第二版 汉化版 [Recipe 1.1] 逐个处理字符串中的各个字符

Recipe 1.1. Processing a String One Character at a Time
Recipe 1.1. 逐个处理字符串中的各个字符

Credit: Luther Blissett


[问题]

您想逐个处理字符串中的各个字符。


[解法]

您可以构建一个列表,其中每个元素存放一个字符串中的字符(由于 Python 中没有用来表示单个“字符”的类型,因此列表的每个元素都是一个长度为1的字符串)。以字符串作为参数,调用内建的 list 即可:

thelist = list(thestring)

您甚至连 list 都不需要构建,因为您可以通过 for 语句,直接对字符串进行循环存取:

for c in thestring:
    do_something_with(c)

或者通过 list comprehension 来达到同样的效果:

results = [do_something_with(c) for c in thestring]

您还可以调用内建的 map 函数来达到同样的效果。将要对每个字符所做的处理归纳为函数,然后将字符串以及处理函数作为参数传递给 map 即可:

results = map(do_something, thestring)


[讨论]

Python 中的单个字符用长度为 1 的字符串来表示。您可以通过循环,逐个访问字符串中的每个字符。若您对每个字符的处理可以归纳为函数调用,您也可以使用 map 来完成。您还可以调用内建的 list 来将字符串的各个字符作为列表元素存放到列表当中。若您希望得到的是集合,其中的元素就是字符串的各个字符,您可以利用 sets 模块来完成,将字符串作为参数来构建一个 Set 即可(在 Python 2.4 中您可以调用内建的 set ,用法同旧版本中的 sets 模块):

import sets
magic_chars = sets.Set('abracadabra')
poppins_chars = sets.Set('supercalifragilisticexpialidocious')
print ''.join(magic_chars & poppins_chars)   # 求交集

运行结果为:

acrd


[请参见]

Library Reference 中关于 sequences(序列)的章节;Perl Cookbook Recipe 1.5 。

你可能感兴趣的:(Python Cookbook 第二版 汉化版 [Recipe 1.1] 逐个处理字符串中的各个字符)