将字母范围扩展为Python中的字符列表

时间:2012-05-23 16:36:40

标签: python string character alphabetical alphabet

我有按字母顺序描述一系列字符的字符串,由两个用连字符分隔的字符组成。我想将它们扩展为这样的单个字符列表:

'a-d' -> ['a','b','c','d']
'B-F' -> ['B','C','D','E','F']

在Python中执行此操作的最佳方法是什么?

3 个答案:

答案 0 :(得分:11)

In [19]: s = 'B-F'

In [20]: list(map(chr, range(ord(s[0]), ord(s[-1]) + 1)))
Out[20]: ['B', 'C', 'D', 'E', 'F']

技巧是将两个字符转换为ASCII码,然后使用range()

P.S。由于您需要列表,list(map(...))构造可以替换为列表推导。

答案 1 :(得分:4)

与使用map()的{​​{3}}一起,您可以使用列表理解来执行此操作:

>>> s = "A-F"
>>> [chr(item) for item in range(ord(s[0]), ord(s[-1])+1)]
['A', 'B', 'C', 'D', 'E', 'F']

答案 2 :(得分:1)

import string

def lis(strs):
    upper=string.ascii_uppercase
    lower=string.ascii_lowercase

    if strs[0] in upper:        
        return list(upper[upper.index(strs[0]): upper.index(strs[-1])+1])
    if strs[0] in lower:
        return list(lower[lower.index(strs[0]): lower.index(strs[-1])+1])

print(lis('a-d'))
print(lis('B-F'))

输出:

['a', 'b', 'c', 'd']
['B', 'C', 'D', 'E', 'F']