6

次のようにPythonで文字範囲を実行する方法はありますか?

for x in range(a,h,)
4

9 に答える 9

20

何かのようなもの:

[chr(i) for i in range(ord('a'),ord('h'))]

反復するアルファベット文字のリストが表示され、ループで使用できます

for x in [chr(i) for i in range(ord('a'),ord('h'))]:
    print(x)

またはこれは同じことをします:

for x in map(chr, range(*map(ord,['a', 'h']))):
    print(x)
于 2013-02-17T23:01:49.033 に答える
5

ord()文字を文字の序数に変換したり、元に戻したりするために使用できます。

def char_range(start, end, step=1):
    for char in range(ord(start), ord(end), step):
        yield chr(char)

それはうまく機能しているようです:

>>> ''.join(char_range('a', 'z'))
    'abcdefghijklmnopqrstuvwxy'
于 2013-02-17T23:01:26.950 に答える
2

組み込みの文字範囲はありませんが、次のように書くことができます。

def letter_range(start, stop):
    for c in xrange(ord(start), ord(stop)):
        yield chr(c)


for x in letter_range('a', 'h'):
    print x,

プリント:

a b c d e f g
于 2013-02-17T23:01:45.327 に答える
2
import string

def letter_range(f,l,al = string.ascii_lowercase):
    for x in al[al.index(f):al.index(l)]:
        yield x

print ' '.join(letter_range('a','h'))

結果

a b c d e f g
于 2013-02-17T23:20:10.133 に答える
1

これは、少なくとも私にとっては読みやすく、理解しやすいです(また、どの文字をどの順序で含めるかを簡単にカスタマイズできます):

letters = 'abcdefghijklmnopqrstuvwxyz'
for each in letters:
    print each

result:
a
b
c
...
z
于 2015-08-18T01:49:53.213 に答える