python如何表示范围_Python中的字符范围

我喜欢这样的方法:

base64chars = list(chars('AZ', 'az', '09', '++', '//'))

它当然可以用更多的舒适来实现,但它快速简单,可读性强。

Python 3

发电机版本:

def chars(*args): for a in args: for i in range(ord(a[0]), ord(a[1])+1): yield chr(i)

或者,如果您喜欢列表parsing:

def chars(*args): return [chr(i) for a in args for i in range(ord(a[0]), ord(a[1])+1)]

第一个收益率:

print(chars('ĀĈ')) print(list(chars('ĀĈ'))) ['Ā', 'ā', 'Ă', 'ă', 'Ą', 'ą', 'Ć', 'ć', 'Ĉ']

而第二个产量:

print(chars('ĀĈ')) ['Ā', 'ā', 'Ă', 'ă', 'Ą', 'ą', 'Ć', 'ć', 'Ĉ']

这真的很方便:

base64chars = list(chars('AZ', 'az', '09', '++', '//')) for a in base64chars: print(repr(a),end='') print('') for a in base64chars: print(repr(a),end=' ')

输出

'A''B''C''D''E''F''G''H''I''J''K''L''M''N''O''P''Q''R''S''T''U''V''W''X''Y''Z''a''b''c''d''e''f''g''h''i''j''k''l''m''n''o''p''q''r''s''t''u''v''w''x''y''z''0''1''2''3''4''5''6''7''8''9''+''/' 'A' 'B' 'C' 'D' 'E' 'F' 'G' 'H' 'I' 'J' 'K' 'L' 'M' 'N' 'O' 'P' 'Q' 'R' 'S' 'T' 'U' 'V' 'W' 'X' 'Y' 'Z' 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 'u' 'v' 'w' 'x' 'y' 'z' '0' '1' '2' '3' '4' '5' '6' '7' '8' '9' '+' '/'

为什么list() ? 没有base64chars可能会成为一个生成器(取决于您select的实现),因此只能在第一个循环中使用。

Python 2

类似的可以用Python 2进行存档。但是如果你想支持Unicode也要复杂得多。 为了鼓励你停止使用Python 2来支持Python 3,我不打算在这里提供Python 2的解决scheme;)

尝试避免Python 2今天的新项目。 在扩展它们之前,也要尝试将旧的项目移植到Python 3 – 从长远来看,这将是值得的!

在Python 2中正确处理Unicode是非常复杂的,如果从一开始就不支持这种支持,那么几乎不可能为Python 2项目添加Unicode支持。

提示如何将其恢复到Python 2:

使用xrange而不是range

创build第二个函数( unicodes ?)来处理Unicode:

使用unichr而不是chr来返回unicode而不是str

永远不要忘记提供unicodestring作为args ,使ord和数组下标正常工作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值